<?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>Erhan is typing... &#187; Javascript</title>
	<atom:link href="http://erhanabay.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://erhanabay.com</link>
	<description>WebDevelopment , PHP, Javascript, CakePHP, ExtJS</description>
	<lastBuildDate>Sat, 23 Jan 2010 15:15:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ext.Direct for CakePHP</title>
		<link>http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/</link>
		<comments>http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 02:19:51 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=385</guid>
		<description><![CDATA[Finally, I completed the basic implementation of Ext.Direct server-side stack for CakePHP. You can clone a working copy from http://github.com/eabay/directcakephp. It is not that good but it works! http://www.extjs.com/forum/showthread.php?t=86501 Related Posts:CakePHP Helper for rakaz Combine Items Per Page Plugin for ExtJS


Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
<li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Finally, I completed the basic implementation of Ext.Direct server-side stack for CakePHP.</p>
<p>You can clone a working copy from <a href="http://github.com/eabay/directcakephp" onclick="pageTracker._trackPageview('/outgoing/github.com/eabay/directcakephp?referer=');">http://github.com/eabay/directcakephp</a>.</p>
<p>It is not that good but it works! <img src='http://erhanabay.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.extjs.com/forum/showthread.php?t=86501" onclick="pageTracker._trackPageview('/outgoing/www.extjs.com/forum/showthread.php?t=86501&amp;referer=');">http://www.extjs.com/forum/showthread.php?t=86501</a></p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=385&type=feed" alt="" />

<p>Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
<li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP Helper for rakaz Combine</title>
		<link>http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/</link>
		<comments>http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 20:49:41 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cakephp helper]]></category>
		<category><![CDATA[combine]]></category>
		<category><![CDATA[compress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[helpers]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=373</guid>
		<description><![CDATA[Combine is still my favorite javascript/css combine and compress script. I posted a solution how to use it in a CakePHP application and here is a little helper to make it more useful: &#60;?php //app/views/helpers/combine.php class CombineHelper extends AppHelper { public $helpers = array('Html', 'Javascript'); private $_pattern = '../combine.php?type=:type&#38;files=:files'; public function js($files) { echo $this-&#62;Javascript-&#62;link($this-&#62;_format($files)); [...]


Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Combine is still my favorite javascript/css combine and compress script.</p>
<p>I <a href="http://erhanabay.com/2009/01/29/using-rakaz-combine-with-your-cakephp-application/">posted</a> a solution how to use it in a CakePHP application and here is a little helper to make it more useful:</p>
<pre class="brush: php;">
&lt;?php
//app/views/helpers/combine.php
class CombineHelper extends AppHelper
{
	public $helpers = array('Html', 'Javascript');

	private $_pattern = '../combine.php?type=:type&amp;files=:files';

	public function js($files)
	{
		echo $this-&gt;Javascript-&gt;link($this-&gt;_format($files));
	}

	public function css($files)
	{
		echo $this-&gt;Html-&gt;css($this-&gt;_format($files, 'css'));
	}

	private function _format($files = array(), $type = 'javascript')
	{
		return String::insert($this-&gt;_pattern, array('type' =&gt; $type, 'files' =&gt; implode(',', $files)));
	}
}
</pre>
<p>Add it to controller&#8217;s helpers property:</p>
<pre class="brush: php;">
&lt;?php
class MyController extends AppController
{
	public $helpers = array('Combine');
</pre>
<p>And call it by passing an array of file names in your view:</p>
<pre class="brush: php;">
$combine-&gt;js(array(
    'javascript1.js',
    'javascript2.js',
    'javascript3.js'
));

$combine-&gt;css(array(
    'stylesheet1.css',
    'stylesheet2.css',
    'stylesheet3.css'
));
</pre>
<blockquote><p>Don&#8217;t forget to add file extensions!</p></blockquote>
<blockquote><p>If you want to add only one file, you don&#8217;t have to use combine helper. Directives added to .htaccess file let combine script to compress the file(<a href="http://erhanabay.com/2009/01/29/using-rakaz-combine-with-your-cakephp-application/">See related post</a>). Just use <em>$javascript->link(&#8216;filename&#8217;)</em>.</p></blockquote>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=373&type=feed" alt="" />

<p>Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FrameworkScanner: Global namespace checker</title>
		<link>http://erhanabay.com/2009/10/20/frameworkscanner-global-namespace-checker/</link>
		<comments>http://erhanabay.com/2009/10/20/frameworkscanner-global-namespace-checker/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 21:36:46 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=329</guid>
		<description><![CDATA[http://mankz.com/code/globalcheck.htm An application to see global namespace pollution that the javascript frameworks cause. You can check for conflicts before usings different libraries together. Related Posts:CakePHP Helper for rakaz Combine


Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://mankz.com/code/globalcheck.htm" onclick="pageTracker._trackPageview('/outgoing/mankz.com/code/globalcheck.htm?referer=');">http://mankz.com/code/globalcheck.htm</a></p></blockquote>
<p>An application to see global namespace pollution that the javascript frameworks cause. You can check for conflicts before usings different libraries together.</p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=329&type=feed" alt="" />

<p>Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/10/20/frameworkscanner-global-namespace-checker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Items Per Page Plugin for ExtJS</title>
		<link>http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/</link>
		<comments>http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 15:02:15 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=262</guid>
		<description><![CDATA[It is a plugin to change dynamically the number of items displayed in a grid. Plugin code: /** * ExtJS component to display number of items per page * * @copyright 2009 Erhan Abay * @author Erhan Abay * @version $Revision$ * @lastmodified $Date$ */ Ext.ux.PerPageField = Ext.extend(Object, { beforeText : '', afterText : 'items [...]]]></description>
			<content:encoded><![CDATA[<p>It is a plugin to change dynamically the number of items displayed in a grid.</p>
<p>Plugin code:</p>
<pre class="brush: jscript;">
/**
 * ExtJS component to display number of items per page
 *
 * @copyright       2009 Erhan Abay
 * @author          Erhan Abay
 * @version         $Revision$
 * @lastmodified    $Date$
 */
Ext.ux.PerPageField = Ext.extend(Object, {

	beforeText : '',
	afterText : 'items per page',

	constructor : function(config) {
		Ext.apply(this, config);
	},

	init : function(grid) {
		this.grid = grid;

		this.grid.on({
			render : function() {
				this.grid.bottomToolbar.add(['-', '-',
						this.beforeText, this.combo,
						this.afterText]);
			},
			scope : this
		});

		this.combo = new Ext.form.ComboBox({
			store : ['5', '10', '20', '50', '100', '200'],
			mode : 'local',
			triggerAction : 'all',
			width : 50,
			listClass : 'x-combo-list-small',
			maskRe : /^[0-9]$/,
			value : grid.bottomToolbar.pageSize,
			listeners : {
				'collapse' : function(f) {
					this.triggerEvent(f);
				},

				'specialkey' : function(f, e) {
					if (e.getKey() == e.ENTER) {
						this.triggerEvent(f);
					}
				},
				scope : this
			}
		});
	},

	triggerEvent : function(f) {
		var o = {
			start : 0
		};
		var v = parseInt(f.getRawValue());
		this.grid.store.baseParams = this.grid.store.baseParams || {};
		this.grid.store.baseParams['limit'] = v;
		this.grid.bottomToolbar.pageSize = v;
		this.grid.store.reload({
			params : o
		});
	}
});

Ext.preg('perpagefield', Ext.ux.PerPageField);
</pre>
<p>Usage:</p>
<pre class="brush: jscript;">
var grid = new Ext.grid.GridPanel({
...
    plugins: [{
        ptype: 'perpagefield',
        beforeText: '',
        afterText: ''
    }],
...
});&lt;/pre&gt;
</pre>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=262&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do you need adblock detection?</title>
		<link>http://erhanabay.com/2009/07/28/do-you-need-adblock-detection/</link>
		<comments>http://erhanabay.com/2009/07/28/do-you-need-adblock-detection/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 06:31:25 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=288</guid>
		<description><![CDATA[Nice message uh? If you wanna use it on your own blog, go to AdBlock Detection Script.]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-287" title="adblocking-info" src="http://erhanabay.com/wp-content/uploads/2009/07/adblocking-info.png" alt="adblocking-info" width="600" height="75" />Nice message uh? <img src='http://erhanabay.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you wanna use it on your own blog, go to <a href="http://www.adblock.org/2004/07/adblock_detection_script/" onclick="pageTracker._trackPageview('/outgoing/www.adblock.org/2004/07/adblock_detection_script/?referer=');">AdBlock Detection Script</a>.</p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=288&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/07/28/do-you-need-adblock-detection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ext.Direct for ASP.NET MVC</title>
		<link>http://erhanabay.com/2009/07/01/ext-direct-for-asp-net-mvc/</link>
		<comments>http://erhanabay.com/2009/07/01/ext-direct-for-asp-net-mvc/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 19:17:46 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=268</guid>
		<description><![CDATA[Sorry, I forgot that I have a blog. Classic ASP was the last scripting language that I used from the universe of Microsoft. PHP is enough to make me happy and my clients. (Hey!, which client cares about the language of your choice? ) Anyway, I won&#8217;t make a comparison of languages. I am not [...]


Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
<li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
<li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Sorry, I forgot that I have a blog. <img src='http://erhanabay.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://en.wikipedia.org/wiki/Active_Server_Pages" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Active_Server_Pages?referer=');">Classic ASP</a> was the last scripting language that I used from the universe of Microsoft. PHP is enough to make me happy and my clients. (Hey!, which client cares about the language of your choice? <img src='http://erhanabay.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</p>
<p>Anyway, I won&#8217;t make a comparison of languages. I am not that stupid. I just want to tell you something about how I am impressed with <a href="http://extjs.com/products/extjs/direct.php" onclick="pageTracker._trackPageview('/outgoing/extjs.com/products/extjs/direct.php?referer=');">Ext.Direct</a> and the <a href="http://extjs.com/forum/showthread.php?t=72245" onclick="pageTracker._trackPageview('/outgoing/extjs.com/forum/showthread.php?t=72245&amp;referer=');">server-side stack</a> for <a href="http://www.asp.net/mvc/" onclick="pageTracker._trackPageview('/outgoing/www.asp.net/mvc/?referer=');">ASP.NET MVC</a>.</p>
<p><a href="http://directwebremoting.org/" onclick="pageTracker._trackPageview('/outgoing/directwebremoting.org/?referer=');">DWR</a> is popular enough in Java world. They know a lot the concept of &#8220;remoting server-side methods to the client-side&#8221;. Ext.Direct has <a href="http://extjs.com/forum/showthread.php?t=67992" onclick="pageTracker._trackPageview('/outgoing/extjs.com/forum/showthread.php?t=67992&amp;referer=');">implementations</a> for several other languages and frameworks. Sadly, CakePHP is not in the list of supported frameworks but ASP.NET MVC has one of the powerful one.</p>
<p>You define couple of config values in web.config and that&#8217;s all! Just extend your controller from DirectController and use DirectResult typed methods to return your result to the browser. You can use several attributes for classes and methods to hide them in Ext.Direct remoting api object returned to the browser.</p>
<p>By the way, I was <span>curious about ASP.NET. I learned MVC pattern from CakePHP. C# and PHP have similar syntax. Those smooth out my </span><span> learning curve in ASP.NET MVC. We can discuss pros and cons of ASP.NET etc. but one thing is clear, Visual Studio. I am using Zend Studio and have tried several others but I have never met that quality of IDE before.</span></p>
<p>Finally, you are right. It is hard to follow. I was talking about ASP, PHP, then Ext.Direct and ASP.NET MVC came to the picture. Let&#8217;s say that this post is a sign of life. <img src='http://erhanabay.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I have a lot to share with you, jQuery, Mootools, Zend Framework, Posh, gadget development, new released ExtJS 3.0, Moodle, PHP 5.3 release, and much more&#8230;</p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=268&type=feed" alt="" />

<p>Related Posts:<ul><li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
<li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
<li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/07/01/ext-direct-for-asp-net-mvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simplifying Icon Management in Ext JS</title>
		<link>http://erhanabay.com/2009/02/12/simplifying-icon-management-in-ext-js/</link>
		<comments>http://erhanabay.com/2009/02/12/simplifying-icon-management-in-ext-js/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 02:40:14 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[icon]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=251</guid>
		<description><![CDATA[New version of Ext JS, 2.2.1, is announced and we are so happy, aren&#8217;t we? Another Ext JS news: Ext Conference 2009. I wish, I could attend. I hope, I am going to be there in the next conference&#8230; In this short tutorial, I am going to show you to simply the icon management in [...]


Related Posts:<ul><li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
<li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
<li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>New version of Ext JS, 2.2.1, is announced and we are so happy, aren&#8217;t we? <img src='http://erhanabay.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Another Ext JS news: <a href="http://extjs.com/conference/" onclick="pageTracker._trackPageview('/outgoing/extjs.com/conference/?referer=');">Ext Conference 2009</a>. I wish, I could attend. I hope, I am going to be there in the next conference&#8230;</p>
<p>In this short tutorial, I am going to show you to simply the icon management in Ext JS. It is not a complete solution. If you want to see a more professional one, see <a href="http://tdg-i.com/44/extuxtdgiiconmgr-a-utility-class-for-managing-icons-and-css" onclick="pageTracker._trackPageview('/outgoing/tdg-i.com/44/extuxtdgiiconmgr-a-utility-class-for-managing-icons-and-css?referer=');">Ext.ux.TDGi.iconMgr</a> from TDG innovations.</p>
<p>When you want to use icons in your Ext JS application you either have to use &#8220;icon&#8221; config option by giving path to your icon or &#8220;iconCls&#8221; by defining a new CSS class. The latter one is more prefferable way of doing it but it means that you need to define a CSS class for each of your icons. Let&#8217;s create a new function to make it easy!</p>
<pre class="brush: jscript;">
Ext.ux.Icon = function(icon){
  var path = 'img/icons/';
  if(!Ext.util.CSS.getRule('.icon-'+icon)){
    Ext.util.CSS.createStyleSheet('.icon-'+icon+' { background-image: url('path+icon+'.png) !important; }');
  }
  return 'icon-'+icon;
}
</pre>
<p>Change the value of &#8220;path&#8221; where your PNG icons are located. Don&#8217;t tell me you don&#8217;t hear the famous icon collection from <a href="http://www.famfamfam.com/lab/icons/silk/" onclick="pageTracker._trackPageview('/outgoing/www.famfamfam.com/lab/icons/silk/?referer=');">famfamfam</a>!</p>
<p>And call it like:</p>
<pre class="brush: jscript;">
...,
iconCls: Ext.ux.Icon('excel'),
...,
</pre>
<p>It is going to add a new CSS rule &#8220;icon-excel&#8221; with background-image &#8220;excel.png&#8221; and add it to the head of your page.</p>
<p>I can hear you say why you have to use PNG extension? You are right, you don&#8217;t have. Just modify Ext.ux.Icon by adding a second argument ,maybe, called as extension and pass the icon&#8217;s extension:</p>
<pre class="brush: jscript;">
Ext.ux.Icon = function(icon, extension){
  var path = 'img/icons/';
  if(!Ext.util.CSS.getRule('.icon-'+icon)){
    Ext.util.CSS.createStyleSheet('.icon-'+icon+' { background-image: url('path+icon+'.'+extension+') !important; }');
  }
  return 'icon-'+icon;
}
</pre>
<pre class="brush: jscript;">
...,
iconCls: Ext.ux.Icon('excel', 'png'),
...,
</pre>
<p>or by removing the extension part and passing the name of icon with its extension:</p>
<pre class="brush: jscript;">
Ext.ux.Icon = function(icon){
  var path = 'img/icons/';
  if(!Ext.util.CSS.getRule('.icon-'+icon)){
    Ext.util.CSS.createStyleSheet('.icon-'+icon+' { background-image: url('path+icon+') !important; }');
  }
  return 'icon-'+icon;
}
</pre>
<pre class="brush: jscript;">
...,
iconCls: Ext.ux.Icon('excel.png'),
...,
</pre>
<p>Don&#8217;t use Ext.ux.Icon if you are going to use hundreds of CSS rules because each class is defined in its own &#8220;style&#8221; tag and it can affect browser rendering performance.</p>
<p>It&#8217;s not important what you think, it&#8217;s important what you do&#8230; <img src='http://erhanabay.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=251&type=feed" alt="" />

<p>Related Posts:<ul><li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
<li><a href='http://erhanabay.com/2009/11/19/cakephp-helper-for-rakaz-combine/' rel='bookmark' title='Permanent Link: CakePHP Helper for rakaz Combine'>CakePHP Helper for rakaz Combine</a></li>
<li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/02/12/simplifying-icon-management-in-ext-js/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dynamic Grid Panel for Ext JS</title>
		<link>http://erhanabay.com/2009/01/29/dynamic-grid-panel-for-ext-js/</link>
		<comments>http://erhanabay.com/2009/01/29/dynamic-grid-panel-for-ext-js/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 01:58:21 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[auto grid]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[dynamic grid]]></category>

		<guid isPermaLink="false">http://erhanabay.com/?p=159</guid>
		<description><![CDATA[I am using Ext JS in my web application projects and I decided that it is time to give back to the community. If you are developing a CRUD application and using grids to display data from your database you should define similar column models, fields, readers, stores etc. for your grids. It is not [...]


Related Posts:<ul><li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
<li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>I am using <a href="http://extjs.com" onclick="pageTracker._trackPageview('/outgoing/extjs.com?referer=');">Ext JS</a> in my web application projects and I decided that it is time to give back to the community.</p>
<p>If you are developing a <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Create_read_update_and_delete?referer=');">CRUD</a> application and using grids to display data from your database you should define similar column models, fields, readers, stores etc. for your grids. It is not a big concern if it is not the first time you do the same things or you have your own components not to repeat yourself. But what if your database table needs a change in its structure? Let me guess&#8230; You change field and column model definitions in your grids and doing the same again and again even there are small changes.</p>
<p>Here is a small Ext JS component that I wrote:</p>
<pre class="brush: jscript;">
Ext.ux.DynamicGridPanel = Ext.extend(Ext.grid.GridPanel, {

  initComponent: function(){
    /**
     * Default configuration options.
     *
     * You are free to change the values or add/remove options.
     * The important point is to define a data store with JsonReader
     * without configuration and columns with empty array. We are going
     * to setup our reader with the metaData information returned by the server.
     * See http://extjs.com/deploy/dev/docs/?class=Ext.data.JsonReader for more
     * information how to configure your JsonReader with metaData.
     *
     * A data store with remoteSort = true displays strange behaviours such as
     * not to display arrows when you sort the data and inconsistent ASC, DESC option.
     * Any suggestions are welcome
     */
    var config = {
      viewConfig: {forceFit: true},
      enableColLock: false,
      loadMask: true,
      border: false,
      stripeRows: true,
      ds: new Ext.data.Store({
		    url: this.storeUrl,
		    reader: new Ext.data.JsonReader()
		  }),
      columns: []
    };

    Ext.apply(this, config);
    Ext.apply(this.initialConfig, config);

    Ext.ux.DynamicGridPanel.superclass.initComponent.apply(this, arguments);
  },

  onRender: function(ct, position){
    this.colModel.defaultSortable = true;

    Ext.ux.DynamicGridPanel.superclass.onRender.call(this, ct, position);

    /**
     * Grid is not masked for the first data load.
     * We are masking it while store is loading data
     */
    this.el.mask('Loading...');
    this.store.on('load', function(){
      /**
       * Thats the magic! <img src='http://erhanabay.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
       *
       * JSON data returned from server has the column definitions
       */
      if(typeof(this.store.reader.jsonData.columns) === 'object') {
	      var columns = [];

	      /**
	       * Adding RowNumberer or setting selection model as CheckboxSelectionModel
	       * We need to add them before other columns to display first
	       */
	      if(this.rowNumberer) { columns.push(new Ext.grid.RowNumberer()); }
	      if(this.checkboxSelModel) { columns.push(new Ext.grid.CheckboxSelectionModel()); }

        Ext.each(this.store.reader.jsonData.columns, function(column){
          columns.push(column);
        });

	      /**
	       * Setting column model configuration
	       */
	      this.getColumnModel().setConfig(columns);
      }
      /**
       * Unmasking grid
       */
      this.el.unmask();
    }, this);
    /**
     * And finally load the data from server!
     */
    this.store.load();
  }
});
</pre>
<p>How to use it?</p>
<pre class="brush: jscript;">
new Ext.ux.DynamicGridPanel({
  id: 'my-grid',
  storeUrl: 'server/url/address/',
  rowNumberer: true,
  checkboxSelModel: true,
  sm: new Ext.grid.CheckboxSelectionModel(),
});
</pre>
<p>And here is the JSON which should be returned from server to dynamically create column and field definitions:</p>
<pre class="brush: jscript;">
{
    &quot;metaData&quot;: {
        &quot;totalProperty&quot;: &quot;total&quot;,
        &quot;root&quot;: &quot;records&quot;,
        &quot;id&quot;: &quot;id&quot;,
        &quot;fields&quot;: [
            {
                &quot;name&quot;: &quot;id&quot;,
                &quot;type&quot;: &quot;int&quot;
            },
            {
                &quot;name&quot;: &quot;name&quot;,
                &quot;type&quot;: &quot;string&quot;
            }
        ]
    },
    &quot;success&quot;: true,
    &quot;total&quot;: 50,
    &quot;records&quot;: [
        {
            &quot;id&quot;: &quot;1&quot;,
            &quot;name&quot;: &quot;AAA&quot;
        },
        {
            &quot;id&quot;: &quot;2&quot;,
            &quot;name&quot;: &quot;BBB&quot;
        }
    ],
    &quot;columns&quot;: [
        {
            &quot;header&quot;: &quot;#&quot;,
            &quot;dataIndex&quot;: &quot;id&quot;
        },
        {
            &quot;header&quot;: &quot;User&quot;,
            &quot;dataIndex&quot;: &quot;name&quot;
        }
    ]
}
</pre>
<p>The code itself is somewhat self-explanatory but for newbie users <a href="http://extjs.com/learn/" onclick="pageTracker._trackPageview('/outgoing/extjs.com/learn/?referer=');">learning center</a> is a good start to understand how to extend Ext JS or simply understand how the framework works.</p>
<p>Suggestions and comments are welcome&#8230;</p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=159&type=feed" alt="" />

<p>Related Posts:<ul><li><a href='http://erhanabay.com/2009/10/10/items-per-page-plugin-for-extjs/' rel='bookmark' title='Permanent Link: Items Per Page Plugin for ExtJS'>Items Per Page Plugin for ExtJS</a></li>
<li><a href='http://erhanabay.com/2009/11/28/ext-direct-for-cakephp/' rel='bookmark' title='Permanent Link: Ext.Direct for CakePHP'>Ext.Direct for CakePHP</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2009/01/29/dynamic-grid-panel-for-ext-js/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>script.aculo.us Efektleri</title>
		<link>http://erhanabay.com/2007/05/17/scriptaculous-efektleri/</link>
		<comments>http://erhanabay.com/2007/05/17/scriptaculous-efektleri/#comments</comments>
		<pubDate>Thu, 17 May 2007 21:41:25 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://erhanabay.com/2007/05/17/scriptaculous-efektleri/</guid>
		<description><![CDATA[Geçen yazımızda başladığımız script.aculo.us serüvenine bıraktığımız yerden devam ediyoruz. Bu hafta kütüphanenin efektler bölümünü ele alacağız ve temel efektlerden birer örnek yapmaya çalışacağız. script.aculo.us kütüphanesinin efektleri, sürükle-bırak, sıralama, otomatik tamamlama gibi işlerinizi kolaylaştıracak kontrolleri ve DOM öğelerini üretebilen özellikleri barındırdığından bahsetmiştik. Bu ay efekt kullanımına değineceğiz. Geçen ayki yazıya ulaşamayanlar pctech.com.tr adresini ziyaret edebilirler. Geçen [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://erhanabay.com/wp-content/uploads/2007/05/scriptaculous_logo.png" title="scriptaculous_logo.png"><img src="http://erhanabay.com/wp-content/uploads/2007/05/scriptaculous_logo.thumbnail.png" title="scriptaculous_logo.png" alt="scriptaculous_logo.png" align="right" border="0" /></a><a href="/2007/05/17/scriptaculous/">Geçen yazımızda</a> başladığımız script.aculo.us serüvenine bıraktığımız yerden devam ediyoruz. Bu hafta kütüphanenin efektler bölümünü ele alacağız ve temel efektlerden birer örnek yapmaya çalışacağız. <span id="more-63"></span></p>
<p>script.aculo.us kütüphanesinin efektleri, sürükle-bırak, sıralama, otomatik tamamlama gibi işlerinizi kolaylaştıracak kontrolleri ve DOM öğelerini üretebilen özellikleri barındırdığından bahsetmiştik. Bu ay efekt kullanımına değineceğiz. Geçen ayki yazıya ulaşamayanlar pctech.com.tr adresini ziyaret edebilirler.</p>
<p>Geçen ay da değindiğimiz bir iki şeyin üzerinden yine geçelim. Efekt kullanımından standart söz dizimi</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod012.png" alt="kod012.png" /></p>
<p>şeklindedir. Her efekt için gerekli parametre olmayabilir. İleride efektlere tek tek değinirken kullanılıp kullanılmadığına da yer vereceğiz. Seçenekler de genel veya sadece efekte bağlı olabilir.</p>
<p>Seçenekler bölümünde tüm efektler için ortak parametreler şu şekildedir:</p>
<p><strong>duration :</strong> Efektin saniye cinsinden uygulanma süresi (Varsayılan: 1.0).<br />
<strong>fps :</strong> Efekti bir film gibi düşünün. İşte bu ayar efektin saniye başına kaç kare olacağını belirler. 25&#8242;in üstünü zaten insan gözü algılamaz <img src='http://erhanabay.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (Varsayılan: 25. En fazla 100 olabilir.)<br />
<strong>transition :</strong> Geçişin nasıl olacağınız belirler. Kullanılabilecek değerler: Effect.Transitions.sinoidal (varsayılan), Effect.Transitions.linear, Effect.Transitions.reverse, Effect.Transitions.wobble ve Effect.Transitions.flicker<br />
<strong>from :</strong> Geçişin (transition) başlangıç noktasını belirler. 0.0 ve 1.0 arasında bir değer olabilir (Varsayılan: 0.0).<br />
<strong>to :</strong> Geçişin bitiş noktasını belirler. 0.0 ve 1.0 arasında bir değer olabilir (Varsayılan: 0.0).<br />
<strong>sync :</strong> Efektin kareleri otomatik olarak gösterip göstermeyeceğini belirler. &#8216;True&#8217; değeri verildiğinde efektin render() metodu çağırılarak kareler kontrol edilebilir. &#8216;Paralel&#8217; efektinde kullanılır.<br />
<strong>queue :</strong> Efektin hangi sırada olacağını belirler. Kullanımına daha sonra değineceğiz.<br />
<strong>direction :</strong> Geçişin yönünü belirler. &#8216;top-left&#8217;, &#8216;top-right&#8217;, &#8216;bottom-left&#8217;, &#8216;bottom-right&#8217; veya &#8216;center&#8217; (varsayılan) değerlerini alabilir ve sadece &#8216;Grow&#8217; ve &#8216;Shrink&#8217; efektlerinde kullanılabilir.</p>
<p>Bunlar dışında seçenekler içerisine parametre olarak kendi fonksiyonlarınızı da dahil edebilirsiniz. Böylece efekt çalıştırılmaya devam ederken belirtilen olaylara bağlı olarak sizin fonksiyonunuz da çalıştırılır. Efekt nesnesi fonksiyonunuza parametre olarak geçirilir. Bu sayede efekt nesnesine de erişerek kendi fonksiyonunuzda kullanabilirsiniz. Kullanabileceğiniz olaylar şunlardır:</p>
<p><strong>beforeStart :</strong> Belirtilen fonksiyon efekt gösteriminin döngüsü başlamadan önce çağırılır.<br />
<strong>beforeUpdate :</strong> Gösterim döngüsünün her bir tekrarında, değişim gerçekleşmeden önce çağırılır.<br />
<strong>afterUpdate :</strong> Gösterim döngüsünün her bir tekrarında, değişim gerçekleştekten sonra çağırılır.<br />
<strong>afterFinish :</strong> Efekt gösteriminin döngüsü bittikten sonra çağırılır.</p>
<p>Kuru kuru bunların ne anlama geldiğini kavramada sorun olabilir o yüzden örneklere geçmeden bir kod örneği verelim.</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod022.png" alt="kod022.png" /></p>
<p>Fonksiyonunuza parametre olarak geçirdiğiniz efekt nesnesinin erişebileceğiniz tüm özellikleri de şu şekilde:</p>
<p><strong>effect.element :</strong> Efektin uygulandığı sayfa öğesi.<br />
<strong>effect.options :</strong> Efekte ait seçenekler.<br />
<strong>effect.currentFrame :</strong> Gösterilen son karenin numarası.<br />
<strong>effect.startOn :</strong> Efektin başlatıldığı zamanın milisaniye cinsinden değeri.<br />
<strong>effect.finishOn :</strong> Efektin bitirildiği zamanın milisaniye cinsinden değeri.<br />
<strong>effect.effects[] :</strong> &#8216;Parallel&#8221; efektinde her bir alt efektin tutulduğu bir effects[] dizisi bulunur. Her bir alt efekte bu dizi içerisinden erişilebilir.</p>
<p><strong>Efektler</strong><br />
script.aculo.us kütüphanesi 5 esas efekte sahiptir. Bir de bunların üzerine kurulu çeşitli birleşim efektleri vardır. Bu sayımızda temel efektleri ele alacağız.</p>
<p><strong>Effect.Opacity:</strong><br />
Sayfa öğesinin saydamlığını değiştirir.</p>
<p align="center">&nbsp;</p>
<p><em>Genel söz dizimi:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod032.png" alt="kod032.png" /></p>
<p><em>Örnek:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod042.png" alt="kod042.png" /></p>
<p>Öğeye tıklandığında 2 saniye içerisinde (duration:2.0) saydamlık %100&#8242;den (from:1.0) %0&#8242;a (to:0.0) düşecek, yani kaybolacak.</p>
<p><strong>Effect.Scale:</strong><br />
Sayfa öğesinin boyutlarını değiştirir. En ve boy &#8216;em&#8217; birimine göre değiştirilir.</p>
<p><em>Genel söz dizimi:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod052.png" alt="kod052.png" /></p>
<p><em>Efekte özel seçenekler:</em><br />
<strong> scaleX :</strong> Yatay olarak boyutlandırma (Varsayılan: &#8216;true&#8217;).<br />
<strong> scaleY :</strong> Dikey olarak boyutlandırma (Varsayılan: &#8216;true&#8217;).<br />
<strong> scaleContent :</strong> İçeriğin de boyutlandırılması (Varsayılan: &#8216;true&#8217;).<br />
<strong> scaleFromCenter :</strong> Öğenin merkez koordinatlarının sabitlenmesi (Varsayılan: &#8216;false&#8217;).<br />
<strong> scaleMode :</strong> Öğenin görülebilen bölgesinin boyutlandırılmasını sağlayan &#8216;box&#8217; (varsayılan), öğenin tamamının boyutlandırılmasını sağlayan &#8216;contents&#8217; değerlerini alabilir. &#8216;originalHeight&#8217; ve &#8216;originalWidth&#8217; değişkenleri kullanılarak uygulanacak boyutun tam değerleri de verilebilir.<br />
<strong> scaleMode :</strong> { originalHeight: 400, originalWidth: 200 }<br />
<strong> scaleFrom :</strong> Boyutlandırmanın başlangıç yüzdesi (Varsayılan: 100.0).</p>
<p><em>Örnek:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod062.png" alt="kod062.png" /></p>
<p>Bağlantıya tıklandığında yazı %120 oranında büyütülecek.</p>
<p><strong>Effect.MoveBy:</strong><br />
Öğe x ve y piksel kadar yer değiştirir.</p>
<p><em>Genel söz dizimi:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod071.png" alt="kod071.png" /></p>
<p><em>Örnek:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod08.png" alt="kod08.png" /></p>
<p>Bağlantıya tıklandığında yazı 5 piksel yukarı, 20 piksel de sağa kayacak. Bu arada ekranın sol üst köşesinin (0,0) noktası olduğunu hatırlatalım.</p>
<p><strong>Effect.Highlight:</strong><br />
Öğenin arka plan rengini değiştirir, vurgu yapar.</p>
<p><em>Genel söz dizimi:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod09.png" alt="kod09.png" /></p>
<p><em>Efekte özel seçenekler:</em><br />
<strong> startcolor :</strong> Efekt başlangıcındaki arka plan rengi (Varsayılan: &#8216;#ffff99&#8242;, açık sarı).<br />
<strong> endcolor :</strong> Efekt bitişindeki arka plan rengi (Varsayılan: &#8216;#ffffff&#8217;, beyaz).<br />
<strong> restorecolor :</strong> Efekt bittikten sonraki arka plan rengi (Varsayılan: CSS değerlerindeki &#8216;background-color&#8217; değeri. &#8216;rgb(0, 255, 0)&#8217; şeklinde belirtilmiş olmalı).</p>
<p><em>Örnek:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod10.png" alt="kod10.png" /></p>
<p>Öğeye tıklandığında arka plan rengi pembeden griye dönüşecek.</p>
<p><strong>Effect.Parallel:</strong><br />
Birden fazla efektin aynı anda uygulanabilmesini sağlar.</p>
<p><em>Genel söz dizimi:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod11.png" alt="kod11.png" /></p>
<p><em>Örnek:</em></p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod12.png" alt="kod12.png" /></p>
<p>&#8216;MoveBy&#8217; ve &#8216;Opacity&#8217; efektleri aynı öğeye uygulanıyor ve efekt bittiğinde öğe gizleniyor.</p>
<p><em>Bu yazı Aralık 2006 tarihinde PC Tech dergisinde yayınlanmıştır.</em></p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=63&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2007/05/17/scriptaculous-efektleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>script.aculo.us</title>
		<link>http://erhanabay.com/2007/05/17/scriptaculous/</link>
		<comments>http://erhanabay.com/2007/05/17/scriptaculous/#comments</comments>
		<pubDate>Thu, 17 May 2007 21:27:59 +0000</pubDate>
		<dc:creator>Erhan Abay</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://erhanabay.com/2007/05/17/scriptaculous/</guid>
		<description><![CDATA[Geçen ayki prototype pencere sınıfı örneğinden sonra sıradaki prototype tabanlı kütüphanemiz script.aculo.us. script.aculo.us Web 2.0 uygulamaları geliştirenlerin projelerine hoş efektler ekleyebilecekleri bir javascript kütüphanesi. Uzun bir zamandır dergimizde sizlere AJAX konusunda çeşitli bilgiler vermeye, örnekler ile kütüphaneleri nasıl kullanabileceğinize dair örnekler vermeye çalışıyoruz. Türkçe olarak internette çok kısıtlı içeriğin yer aldığı bu konuda PC Tech [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://erhanabay.com/wp-content/uploads/2007/05/scriptaculous_logo.png" title="scriptaculous_logo.png"><img src="http://erhanabay.com/wp-content/uploads/2007/05/scriptaculous_logo.thumbnail.png" title="scriptaculous_logo.png" alt="scriptaculous_logo.png" align="right" border="0" /></a>Geçen ayki prototype pencere sınıfı örneğinden sonra sıradaki prototype tabanlı kütüphanemiz script.aculo.us. script.aculo.us Web 2.0 uygulamaları geliştirenlerin projelerine hoş efektler ekleyebilecekleri bir javascript kütüphanesi.</p>
<p><span id="more-62"></span></p>
<p>Uzun bir zamandır dergimizde sizlere AJAX konusunda çeşitli bilgiler vermeye, örnekler ile kütüphaneleri nasıl kullanabileceğinize dair örnekler vermeye çalışıyoruz. Türkçe olarak internette çok kısıtlı içeriğin yer aldığı bu konuda PC Tech olarak sizlere uzman düzeyinden ziyade başlangıç düzeyi bilgiler vererek en azından işin bir ucundan AJAX bulaşmanızı ve geleceğin web uygulamalarını geliştirenler arasında yer alabilmenizi sağlamak asıl amacımız. Balık tutmayı öğretmek balık vermekten iyidir. Eğer bu yeni akıma dahil olduysanız ve kendi uygulamalarınızı geliştirme süreci içerisindeyseniz size Türkçe bir AJAX grubuna yönlendirelim. &#8216;Ajax Nedir&#8217; adlı bu gruba <a href="http://groups.google.com/group/ajaxnedir" target="_blank" onclick="pageTracker._trackPageview('/outgoing/groups.google.com/group/ajaxnedir?referer=');">http://groups.google.com/group/ajaxnedir</a> adresinden üye olabilirsiniz. Emekleme aşamasındaki bu kullanıcı topluluğunun ilerlemesine katkıda bulunmak isteyenlere duyurulur. İngilizce içerik içinse ajaxian.com&#8217;u takip ederek gelişmelerden haberdar olabilirsiniz.</p>
<p>Şimdi gelelim asıl konumuza, script.aculo.us. Yine söylemekten kendimizi alamayacağız ama script.aculo.us prototype çatısı üzerine kurulmuş ve â€“tabir-i caizse- yanarlı dönerli sayfalar tasarlamak için birçok görsel efekti size sunan bir kütüphane. Kütüphane içerisinde efektler yanında sürükle-bırak, sıralama, otomatik tamamlama gibi işlerinizi kolaylaştıracak kontroller de yer alıyor. Ayrıca DOM elemanlarını (daha açık olmak gerekirse HTML tarzı kodları) üretebilen özelliğini de dinamik olarak sayfa içi güncelleme sırasında kullanabilirsiniz.</p>
<p><strong>Kullanım</strong><br />
<a href="http://script.aculo.us" target="_blank" onclick="pageTracker._trackPageview('/outgoing/script.aculo.us?referer=');">http://script.aculo.us</a> adresinden indirebileceğiniz kütüphanenin arşiv dosyasında birçok JS dosyası yer alıyor. script.aculo.us kütüphanesinin doğru çalışması için gerekenlerden prototype.js, scriptaculous.js, builder.js, effects.js, dragdrop.js, slider.js and controls.js dosyalarını bir klasöre aktarın ve script.aculo.us kullanmak istediğiniz sayfanın HEAD etiketi içerisinde bağlantı verin.</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod011.png" alt="kod011.png" /></p>
<p>scriptaculous.js dosyası varsayılan olarak tüm diğer javascript dosyalarını yükler. Eğer sayfa içerisinde sadece kullanmak istediğiniz özelliğe ait dosyaları yüklemek isterseniz kodu aşağıdaki gibi düzenleyebilirsiniz.</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod021.png" alt="kod021.png" /></p>
<p>Burada virgüller ile ayrılmış değerler klasöre kopyaladığınız dosyaların isimlerinden ibaret. Örnekler vermeye başladıkça hangi dosyanın nerede kullanıldığını daha rahat anlayacaksınız. Ama dikkat edilmesi gereken nokta bu paketlerin (özelliklerin ayrı olarak dosyalanmasından dolayı bu kelimeyi tercih ettik) birbiri ile olan bağımlılık durumunun gözden kaçırılmaması.</p>
<p>Bir script.aculo.us efekti kullanmak istediğimizde bunun iki yolu var. Birincisi SCRIPT etiketi içerisinde istediğimiz fonksiyonu çağırmak;</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod031.png" alt="kod031.png" /></p>
<p>diğeri de sayfa elemanı özelliklerinde istediğimiz efektin sınıfından birini kopyalayarak olaya bağlamak.</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod041.png" alt="kod041.png" /></p>
<p>İlk yöntemde sayfa tarayıcı tarafından yorumlanırken bu kısma gelindiğinde javascript kodu da çalıştırılacak, ikinci de ise DIV ile sınırlandırılan bölgeye tıklandığında efekt bu etikete uygulanacak.</p>
<p>Uygulanabilecek tüm efektlerin listesi şu şekilde:</p>
<blockquote><p>Effect.Highlight<br />
Effect.MoveBy<br />
Effect.Opacity<br />
Effect.Parallel<br />
Effect.Scale<br />
Effect.Appear<br />
Effect.BlindDown<br />
Effect.BlindUp<br />
Effect.DropOut<br />
Effect.Fade<br />
Effect.Fold<br />
Effect.Grow<br />
Effect.Puff<br />
Effect.Pulsate<br />
Effect.Shake<br />
Effect.Shrink<br />
Effect.SlideDown<br />
Effect.SlideUp<br />
Effect.Squish<br />
Effect.SwitchOff</p></blockquote>
<p>Tüm efektlerin nasıl çalıştığını <a href="http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo?referer=');">http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo</a> adresinden kontrol edebilirsiniz.</p>
<p>Bir efekte değiştirgen parametre ile değer geçirmediğiniz sürece varsayılan değerler ile işini yapacaktır. Dilerseniz bu parametrelerin neler olduğuna da bir bakalım.</p>
<p>Bir efektin genel kullanımı</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod051.png" alt="kod051.png" /></p>
<p>şeklindedir. Her efekt için gerekli parametre yok. Kullanılan parametreler ve seçenekleri örneklerde geçtiğinde açıklamaya çalışacağız.</p>
<p>Küçük bir örnek vermek gerekirse de</p>
<p align="center"> <img src="http://erhanabay.com/wp-content/uploads/2007/05/kod061.png" alt="kod061.png" /></p>
<p>Kodu bir olaya bağlamak olarak verdiğimiz 2 yöntemdeki gibi bir kullanımla sayfa elemanını (örneğin DIV) 0.5 saniye içinde görünmez hale getirecektir &#8217;0.0&#8242; değerini 0&#8242;la 1 arasında bir değer olarak belirlerseniz de şeffaf bir görünüm elde edebilirsiniz. Ya da &#8216;from:&#8217; seçeneği sayısal değer olarak &#8216;to:&#8217; seçeneğinden daha küçük olursa şeffaflığı azalan bir görünüm oluşacaktır.</p>
<p>Aslında bu sayı AJAX yazısı biraz kısa gibi oldu ama script.aculo.us ile en az 1-2 sayı daha uğraşacağımızı göz önünde bulundurduğumuzda biraz sindirerek gitmek gerektiğini düşündük. O yüzden efektlerin nasıl kullanıldığına dair ısınma turlarını içeren bu yazının ardından kontrolleri de katarak Web 2.0&#8242;a yakışır sayfaları tasarlamayı sonraya bırakmak istedik. Bu ay örnekler olmadığından size örnekleri test edebileceğiniz bir adres de veremiyoruz. Ama bir sürprizimiz var! Pctech.com.tr yenilendi. Aslında bu satırları yazarken son rötuşlar yapılmaya devam ediliyor bu yüzden aksilik çıkmazsa diye sonuna eklememiz gerek. Ama yeni haliyle beraber daha güncel ve dolu dolu bir pctech.com.tr&#8217;de de AJAX ile olan sohbetlerimize yer vermeyi düşünüyoruz. İçerik olarak iddialı olacağımızı şimdiden söylemek isterim. Ödev yok, paydos! <img src='http://erhanabay.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p><strong> Desteklenen Tarayıcılar</strong><br />
* Microsoft Internet Explorer 6.0+ (Windows için)<br />
* Mozilla Firefox 1.0+/Mozilla 1.7+<br />
* Apple Safari 1.2+<br />
* Konqueror<br />
* Camino<br />
* Opera 7.54 (AJAX ve şeffaflık kullanan efektler desteklenmiyor)<br />
* Opera 8 (şeffaflık kullanan efektler desteklenmiyor)<br />
* Opera 9+</p></blockquote>
<p><em>Bu yazı Kasım 2006 tarihinde PC Tech dergisinde yayınlanmıştır.</em></p>
<img src="http://erhanabay.com/?ak_action=api_record_view&id=62&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://erhanabay.com/2007/05/17/scriptaculous/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
