<?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>Just a bunch of code &#187; elements</title>
	<atom:link href="http://www.bunchacode.com/tag/elements/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bunchacode.com</link>
	<description>where geeks are cool.</description>
	<lastBuildDate>Fri, 13 Aug 2010 18:04:07 +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>Cakephp custom dropdown menu/select  element</title>
		<link>http://www.bunchacode.com/design/cakephp-custom-dropdown-menu-element/</link>
		<comments>http://www.bunchacode.com/design/cakephp-custom-dropdown-menu-element/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 20:52:42 +0000</pubDate>
		<dc:creator>Funky Dude</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[elements]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.bunchacode.com/?p=107</guid>
		<description><![CDATA[[UPDATED to allow multiple instances] [UPDATED bug fix] Hello everyone. The select tag that comes with html is pretty useful, but once in a while, one of your clients complains that it&#8217;s fugly. So you need to make  a custom one. And that&#8217;s what i just did. Damned clients! Requirements: jquery To do this you [...]]]></description>
			<content:encoded><![CDATA[<p><strong>[UPDATED to allow multiple instances]</strong><br />
<strong>[UPDATED bug fix]</strong></p>
<p>Hello everyone. The select tag that comes with html is pretty useful, but once in a while, one of your clients complains that it&#8217;s fugly. So you need to make  a custom one. And that&#8217;s what i just did. Damned clients!</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li> jquery</li>
</ul>
<p>To do this you need to create a file called <strong>customSelect.ctp</strong> in your app<strong>/views/elements folder</strong>(Of course you don&#8217;t NEED cakephp to use this.).</p>
<p>And the content said file would be(This example is for a category select menu.):<br />
<span id="more-107"></span></p>
<pre class="php">
<span class="htmlOtherTag">&lt;div class=<span class="htmlAttributeValue">&quot;customSelect&quot;</span>&gt;</span>
<span class="htmlOtherTag">&lt;div class=<span class="htmlAttributeValue">&quot;selectLeft&quot;</span>&gt;</span>
<span class="htmlOtherTag">&lt;div class=<span class="htmlAttributeValue">&quot;selectOptions&quot;</span> style=<span class="htmlAttributeValue">&quot;<span class="cssProperty">display</span><span class="cssRest">:</span><span class="cssValue">none</span><span class="cssRest">;</span>&quot;</span>&gt;</span>$name){ ?&gt;<span class="htmlOtherTag">&lt;/div&gt;</span>
<span class="htmlFormTag">&lt;input class=<span class="htmlAttributeValue">&quot;selectInput&quot;</span> name=<span class="htmlAttributeValue">&quot;<span class="phpScriptTag"><span class="phpOperator">&lt;</span><span class="phpOperator">?</span>php</span> <span class="phpFunction">echo</span> $inputName<span class="phpText">;</span><span class="phpScriptTag"><span class="phpOperator">?</span><span class="phpOperator">&gt;</span></span></span>&quot;</span> type=<span class="htmlAttributeValue">&quot;hidden&quot;</span> /&gt;<span class="htmlOtherTag">&lt;/div&gt;</span>
<span class="htmlOtherTag">&lt;div class=<span class="htmlAttributeValue">&quot;selectRight&quot;</span>&gt;</span>
<span class="htmlOtherTag">&lt;div class=<span class="htmlAttributeValue">&quot;selectDropDownArrow&quot;</span>&gt;</span><span class="htmlImageTag">&lt;img src=<span class="htmlAttributeValue">&quot;img/dropDownArrow.jpg&quot;</span> alt=<span class="htmlAttributeValue">&quot;&gt;</span>&gt;&quot;</span> /&gt;<span class="htmlOtherTag">&lt;/div&gt;</span>
<span class="htmlOtherTag">&lt;/div&gt;</span>
<span class="htmlOtherTag">&lt;/div&gt;</span>
<span class="htmlScriptTag">&lt;script type=<span class="htmlAttributeValue">&quot;text/javascript&quot;</span>&gt;</span>// <span class="htmlOtherTag">&lt;![CDATA[
$(document).ready(function(){
	//set the default item to show
	setSelectedOption(&#039;&#039;);
});
// ]]&gt;</span><span class="htmlScriptTag">&lt;/script&gt;</span>
</pre>
<p>the javascript file, customSelect.js</p>
<pre class="php">
$<span class="phpOperator">(</span>document<span class="phpOperator">)</span>.ready<span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
<span class="phpComment">//capture clicks anywhere and hide dropdown menu
</span>$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.click<span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.slideUp<span class="phpOperator">(</span><span class="phpString">'fast'</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpComment">//click on the selected item div to toggle menu
</span>$<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectedCategoryDiv'</span><span class="phpOperator">)</span>.click<span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span>e<span class="phpOperator">)</span>
<span class="phpOperator">{</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.siblings<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.slideToggle<span class="phpOperator">(</span><span class="phpString">'fast'</span><span class="phpOperator">)</span><span class="phpText">;</span>
e.stopPropagation<span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpKeyword">
return </span>>false<span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpComment">//click on the down arrow to toggle menu
</span>$<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectDropDownArrow'</span><span class="phpOperator">)</span>.click<span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span>e<span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.parent<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectRight'</span><span class="phpOperator">)</span>.siblings<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectLeft'</span><span class="phpOperator">)</span>.children<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.slideToggle<span class="phpOperator">(</span><span class="phpString">'fast'</span><span class="phpOperator">)</span><span class="phpText">;</span>
e.stopPropagation<span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpKeyword">
return </span>>false<span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpComment">//hover on menu item to change color
</span>$<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.children<span class="phpOperator">(</span><span class="phpString">'div'</span><span class="phpOperator">)</span>.hover<span class="phpOperator">(</span>
<span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.addClass<span class="phpOperator">(</span><span class="phpString">'hoverItem'</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span>,
<span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.removeClass<span class="phpOperator">(</span><span class="phpString">'hoverItem'</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpComment">//click on menu item to select
</span>$<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.children<span class="phpOperator">(</span><span class="phpString">'div'</span><span class="phpOperator">)</span>.click<span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span>e<span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.parent<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.siblings<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectInput'</span><span class="phpOperator">)</span>.val<span class="phpOperator">(</span>$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.attr<span class="phpOperator">(</span><span class="phpString">'value'</span><span class="phpOperator">)</span><span class="phpOperator">)</span><span class="phpText">;</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.parent<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.slideUp<span class="phpOperator">(</span><span class="phpString">'fast'</span><span class="phpOperator">)</span><span class="phpText">;</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.parent<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.siblings<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectedCategoryDiv'</span><span class="phpOperator">)</span>.html<span class="phpOperator">(</span>$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.html<span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">)</span><span class="phpText">;</span>
e.stopPropagation<span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpKeyword">
return </span>>false<span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpFunctionKeyword">function</span> setSelectedOption<span class="phpOperator">(</span>id<span class="phpOperator">)</span>
<span class="phpOperator">{</span>
<span class="phpKeyword">
if<span class="phpOperator">(</span></span>id <span class="phpOperator">!</span><span class="phpOperator">=</span> <span class="phpString">''</span><span class="phpOperator">)</span>
<span class="phpOperator">{</span>
$<span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>selectOptions'</span><span class="phpOperator">)</span>.<span class="phpFunction">each</span><span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.children<span class="phpOperator">(</span><span class="phpString">'div'</span><span class="phpOperator">)</span>.<span class="phpFunction">each</span><span class="phpOperator">(</span><span class="phpFunctionKeyword">function</span><span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
<span class="phpKeyword">
if<span class="phpOperator">(</span></span>$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.attr<span class="phpOperator">(</span><span class="phpString">'value'</span><span class="phpOperator">)</span> <span class="phpOperator"><span class="phpOperator">=</span>=</span> id<span class="phpOperator">)</span>
$<span class="phpOperator">(</span>this<span class="phpOperator">)</span>.click<span class="phpOperator">(</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">}</span>
</pre>
<p>the css file, customSelect.css</p>
<pre class="php">
<span class="phpOperator">.</span>customSelect
<span class="phpOperator">{</span>
padding<span class="phpOperator">:</span><span class="phpNumber">0</span> 4px<span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>selectedCategoryDiv
<span class="phpOperator">{</span>
background-color<span class="phpOperator">:</span>#FFFFFF<span class="phpText">;</span>
padding<span class="phpOperator">:</span>4px 5px<span class="phpText">;</span>
font-weight<span class="phpOperator">:</span>bold<span class="phpText">;</span>
font-size<span class="phpOperator">:</span>16px<span class="phpText">;</span>
width<span class="phpOperator">:</span>215px<span class="phpText">;</span>
cursor<span class="phpOperator">:</span>pointer<span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>selectLeft
<span class="phpOperator">{</span>
float<span class="phpOperator">:</span>left;
border-top<span class="phpOperator">:</span>1px solid #93a8ad<span class="phpText">;</span>
border-bottom<span class="phpOperator">:</span>1px solid #FFFFFF<span class="phpText">;</span>
border-left<span class="phpOperator">:</span>1px solid #bac8cb<span class="phpText">;</span>
border-right<span class="phpOperator">:</span>1px dotted #93a8ad<span class="phpText">;</span>
position<span class="phpOperator">:</span>relative<span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>selectOptions
<span class="phpOperator">{</span>
position<span class="phpOperator">:</span>absolute<span class="phpText">;</span>
top<span class="phpOperator">:</span>29px<span class="phpText">;</span>
left<span class="phpOperator">:</span>0px<span class="phpText">;</span>
background-color<span class="phpOperator">:</span>#FFFFFF<span class="phpText">;</span>
width<span class="phpOperator">:</span>225px<span class="phpText">;</span>
padding<span class="phpOperator">:</span>0;
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>selectOptions div
<span class="phpOperator">{</span>
padding<span class="phpOperator">:</span>2px 7px<span class="phpText">;</span>
cursor<span class="phpOperator">:</span>pointer<span class="phpText">;</span>
font-size<span class="phpOperator">:</span>16px<span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>selectRight
<span class="phpOperator">{</span>
float<span class="phpOperator">:</span>left;
background-color<span class="phpOperator">:</span>#FFFFFF<span class="phpText">;</span>
border-top<span class="phpOperator">:</span>1px solid #93a8ad<span class="phpText">;</span>
border-bottom<span class="phpOperator">:</span>1px solid #FFFFFF<span class="phpText">;</span>
border-left<span class="phpOperator">:</span>none<span class="phpText">;</span>
border-right<span class="phpOperator">:</span>1px solid #FFFFFF<span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>selectDropDownArrow
<span class="phpOperator">{</span>
padding<span class="phpOperator">:</span>7px 8px 6px 8px<span class="phpText">;</span>
cursor<span class="phpOperator">:</span>pointer<span class="phpText">;</span>
border<span class="phpOperator">:</span>none<span class="phpText">;</span>
margin<span class="phpOperator">:</span>0;
<span class="phpOperator">}</span>
<span class="phpOperator">.</span>hoverItem
<span class="phpOperator">{</span>
color<span class="phpOperator">:</span>#ef3e36<span class="phpText">;</span>
<span class="phpOperator">}</span>
</pre>
<p>and the image<br />
<img class="alignnone size-full wp-image-119" title="dropDownArrow" src="http://www.bunchacode.com/wp-content/uploads/2009/07/dropDownArrow.jpg" alt="dropDownArrow" width="8" height="8" /></p>
<p>You need to include the javascript and js files in your layout file.<br />
And to call the element from your view files, you can do this</p>
<pre class="php">
<span class="phpComment">//input name is the name of original select
</span><span class="phpComment">//datais an <span class="phpFunction">array</span> of menu items, how you structure is up to you
</span><span class="phpComment">//selected is the value of the selected menu item
</span><span class="phpFunction">echo</span> <span class="phpScriptVar">$this</span><span class="phpOperator">-<span class="phpOperator">&gt;</span></span>element<span class="phpOperator">(</span><span class="phpString">'customSelect'</span>,<span class="phpFunction">array</span><span class="phpOperator">(</span><span class="phpString">'inputName'</span><span class="phpOperator"><span class="phpOperator">=</span><span class="phpOperator">&gt;</span></span><span class="phpString">'data<span class="phpOperator">[</span>category<span class="phpOperator">]</span>'</span>,<span class="phpString">'data'</span><span class="phpOperator"><span class="phpOperator">=</span><span class="phpOperator">&gt;</span></span>$categories,<span class="phpString">'selected'</span><span class="phpOperator"><span class="phpOperator">=</span><span class="phpOperator">&gt;</span></span><span class="phpString">''</span><span class="phpOperator">)</span><span class="phpOperator">)</span><span class="phpText">;</span>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bunchacode.com/design/cakephp-custom-dropdown-menu-element/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
