<?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>Webmaster Bulletin &#187; Web Components</title>
	<atom:link href="http://www.webmasterbulletin.net/category/technologies/components/feed" rel="self" type="application/rss+xml" />
	<link>http://www.webmasterbulletin.net</link>
	<description>Rambling around the web publishing industry</description>
	<lastBuildDate>Wed, 21 Jul 2010 09:48:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Allow users to submit posts with wordpress</title>
		<link>http://www.webmasterbulletin.net/2010/06/allow-users-to-submit-posts-with-wordpress/1240</link>
		<comments>http://www.webmasterbulletin.net/2010/06/allow-users-to-submit-posts-with-wordpress/1240#comments</comments>
		<pubDate>Fri, 04 Jun 2010 11:14:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=1240</guid>
		<description><![CDATA[Besides the famous CFORMS plugins, opther plugins exist that forward user input directly to posts

TDO Mini Forms : comes with a lot of options that specify who can publish what and how new posts are moderated
FV Community News

]]></description>
			<content:encoded><![CDATA[<p>Besides the famous CFORMS plugins, opther plugins exist that forward user input directly to posts</p>
<ul>
<li>TDO Mini Forms : comes with a lot of options that specify who can publish what and how new posts are moderated</li>
<li><a href="http://www.frank-verhoeven.com/wordpress-plugin-fv-community-news/">FV Community News</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2010/06/allow-users-to-submit-posts-with-wordpress/1240/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ixedit : Jquery development without coding</title>
		<link>http://www.webmasterbulletin.net/2009/09/ixedit-jquery-development-without-coding/993</link>
		<comments>http://www.webmasterbulletin.net/2009/09/ixedit-jquery-development-without-coding/993#comments</comments>
		<pubDate>Tue, 08 Sep 2009 09:22:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=993</guid>
		<description><![CDATA[IxEdit is a JavaScript-based interaction design tool for the web taht gives designers and developers a few ready to use jquery tools, such as animation, form enhancements (date picker), and DOM manipulation, all designed within a web based interface. It uses GEARS, a tool developed by google that interfaces browsers with desktop, and the only [...]]]></description>
			<content:encoded><![CDATA[<p>IxEdit is a JavaScript-based interaction design tool for the web taht gives designers and developers a few ready to use jquery tools, such as animation, form enhancements (date picker), and DOM manipulation, all designed within a web based interface. It uses GEARS, a tool developed by google that interfaces browsers with desktop, and the only requirement to start working on a web page is to include the ixedit javascript, plus the jquery libraries.</p>
<p><a href="http://www.ixedit.com/">http://www.ixedit.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/09/ixedit-jquery-development-without-coding/993/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jquery drop down menu, named mega</title>
		<link>http://www.webmasterbulletin.net/2009/08/jquery-drop-down-menu-named-mega/964</link>
		<comments>http://www.webmasterbulletin.net/2009/08/jquery-drop-down-menu-named-mega/964#comments</comments>
		<pubDate>Tue, 25 Aug 2009 12:53:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=964</guid>
		<description><![CDATA[I usually take superfish for granted when working on a jquery based drop down menu : based on regular ul / li tags, it uses CSS layout directives to position menu items, which I have tried up to 3 levels of navigation. I have just found another good example of submenu implementation that demonstrates the [...]]]></description>
			<content:encoded><![CDATA[<p>I usually take <a href="http://plugins.jquery.com/project/Superfish" target="_blank">superfish </a>for granted when working on a jquery based drop down menu : based on regular ul / li tags, it uses CSS layout directives to position menu items, which I have tried up to 3 levels of navigation. I have just found another good example of submenu implementation that demonstrates the ability to write paragraphs inside the sub layer, as  shown in the illustration below. The<a href="http://www.thewebsqueeze.com/web-design-tutorials/how-to-make-a-mega-drop-down-menu.html" target="_blank"> tutorial written by Jon Philipps on The Web Squeeze</a> explains how CSS3 manages to implement rounded corners while jquery deals with the drop down effect. Nothing really new, just another way of working with Jquery and layers, but nice.</p>
<p><a href="http://www.webmasterbulletin.net/wp-content/uploads/2009/08/jquery-dropdown.jpg" rel="lightbox[964]"><img class="aligncenter size-full wp-image-965" title="jquery-dropdown" src="http://www.webmasterbulletin.net/wp-content/uploads/2009/08/jquery-dropdown.jpg" alt="jquery-dropdown" width="490" height="207" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/08/jquery-drop-down-menu-named-mega/964/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery goodies</title>
		<link>http://www.webmasterbulletin.net/2009/06/jquery-goodies/898</link>
		<comments>http://www.webmasterbulletin.net/2009/06/jquery-goodies/898#comments</comments>
		<pubDate>Mon, 29 Jun 2009 07:01:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=898</guid>
		<description><![CDATA[
vertical scroll
http://www.webdesignbooth.com/create-a-vertical-scrolling-news-ticker-with-jquery-and-jcarousel-lite/
portlets  feature drag/drop, expand, collapse and many more features!
http://sonspring.com/journal/jquery-portlets
grid plugin : new version with master  /detail view
http://www.trirand.com/blog/
jquery dynamic drag &#38; drop
http://www.webresourcesdepot.com/dynamic-dragn-drop-with-jquery-and-php 

]]></description>
			<content:encoded><![CDATA[<ul>
<li>vertical scroll<br />
<a href="http://www.webdesignbooth.com/create-a-vertical-scrolling-news-ticker-with-jquery-and-jcarousel-lite/">http://www.webdesignbooth.com/create-a-vertical-scrolling-news-ticker-with-jquery-and-jcarousel-lite/</a></li>
<li>portlets  feature drag/drop, expand, collapse and many more features!<br />
<a href="http://sonspring.com/journal/jquery-portlets">http://sonspring.com/journal/jquery-portlets</a></li>
<li>grid plugin : new version with master  /detail view<br />
<a href="http://www.trirand.com/blog/">http://www.trirand.com/blog/</a></li>
<li>jquery dynamic drag &amp; drop<br />
<a href="http://www.webresourcesdepot.com/dynamic-dragn-drop-with-jquery-and-php">http://www.webresourcesdepot.com/dynamic-dragn-drop-with-jquery-and-php </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/06/jquery-goodies/898/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Form builders : getting hot</title>
		<link>http://www.webmasterbulletin.net/2009/06/form-builders-getting-hot/878</link>
		<comments>http://www.webmasterbulletin.net/2009/06/form-builders-getting-hot/878#comments</comments>
		<pubDate>Mon, 15 Jun 2009 07:06:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>
		<category><![CDATA[forms]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=878</guid>
		<description><![CDATA[A few months ago I published a quick comparison of 3 opensource cmses that come with a form builder. At the time the form builder feature was quite new and innovative, it now comes as a standard feature in a lot of web publishing solutions. I have reviewed a few hosted form makers, such as

 [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago I published a quick comparison of <a href="http://www.webmasterbulletin.net/2008/09/cms-compare-concrete5-wordpress-silverstripe">3 opensource cmses</a> that come with a form builder. At the time the form builder feature was quite new and innovative, it now comes as a standard feature in a lot of web publishing solutions. I have reviewed a few hosted form makers, such as</p>
<ul>
<li> <a href="http://wufoo.com/">Wufoo </a>(hosted),</li>
<li><a href="http://www.appnitro.com/">MachForm </a>onsite application available for less than 100 dollars,</li>
<li><a href="http://www3.formassembly.com/">FormAssembly </a>hosted  (<a href="http://onsite.formassembly.com/pricing.php">on site</a> version available for a few thousand dollars),</li>
<li><a href="http://www.form-builder-pro.com/">FormBuilderPro </a>(hosted and onsite application)</li>
<li><a href="http://experiments.botsko.net/tests/formbuilder/">Experimental Free opensource jquery form builder</a></li>
<li><strong><em>[2009-10-23 edit] </em><span style="font-weight: normal;"><a href="http://blog.sonuku.com/2009/04/11/php-formbuilder/">Sonoku&#8217;s Form Builder</a></span></strong></li>
</ul>
<p>They all have very nice interfaces including data gathering and statistics but the one I loved best was MachForm that is also distributed as a standalone application fro a very reasonable price. It uses Jquery as the main javascript library and lets the user build forms using drag and drop. One good idea is the composite field that lets the user add adresse field in one click. The screenshot below displays my own translation of the admin interface to french.</p>
<p><a href="http://www.webmasterbulletin.net/wp-content/uploads/2009/06/formmaker.jpg" rel="lightbox[878]"><img class="aligncenter size-full wp-image-879" title="formmaker" src="http://www.webmasterbulletin.net/wp-content/uploads/2009/06/formmaker.jpg" alt="formmaker" width="450" height="305" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/06/form-builders-getting-hot/878/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento : display product image on invoice + shipping PDF</title>
		<link>http://www.webmasterbulletin.net/2009/06/magento-display-product-image-on-invoice-shipping-pdf/873</link>
		<comments>http://www.webmasterbulletin.net/2009/06/magento-display-product-image-on-invoice-shipping-pdf/873#comments</comments>
		<pubDate>Thu, 04 Jun 2009 14:36:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=873</guid>
		<description><![CDATA[Magento&#8217;s wiki has a few articles on the subject of Magento&#8217;s PDF generation, which is not very efficient in its default version : one of the main critics I&#8217;ve seen is the size of the generated PDF, which can fly to more than 1MB, where a simple font replacement can bring the weight to less [...]]]></description>
			<content:encoded><![CDATA[<p>Magento&#8217;s wiki has a few articles on the subject of Magento&#8217;s PDF generation, which is not very efficient in its default version : one of the main critics I&#8217;ve seen is the size of the generated PDF, which can fly to more than 1MB, where <a href="http://www.magentocommerce.com/wiki/how-to/editing_an_invoice_pdf">a simple font replacement</a> can bring the weight to less than a few KBs ! The subject of the article below is to illustrate how to display images on each line of the generated invoice and shipping PDF.<br />
The product line display occurs in specific PHP classes within  the app/code/core/Mage/sales/Model/order/pdf folder</p>
<p>there is one folder for shipment, one for invoice, and one for credit. The product display occurs in the DEfault file where the Mage_Sales_Model_Order_Pdf_Items_Abstract is defined. What I did was simply instanciate a product object using the id from order / items, and get the image file using the following code in the draw function :</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//&lt;display image&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$id</span> = Mage::<span class="me2">getModel</span><span class="br0">&#40;</span><span class="st0">&#8216;catalog/product&#8217;</span><span class="br0">&#41;</span>-&gt;<span class="me1">getIdBySku</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">getSku</span><span class="br0">&#40;</span><span class="re0">$item</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$product</span>= &nbsp;Mage::<span class="me2">getModel</span><span class="br0">&#40;</span><span class="st0">&#8216;catalog/product&#8217;</span><span class="br0">&#41;</span>-&gt;<span class="me1">load</span><span class="br0">&#40;</span><span class="re0">$id</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$imageUrl</span> = <span class="re0">$product</span>-&gt;<span class="me1">getSmallImageUrl</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$imageFile</span>= &nbsp;<a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span>Mage::<span class="me2">getBaseUrl</span><span class="br0">&#40;</span><span class="st0">&#8216;media&#8217;</span><span class="br0">&#41;</span>,<span class="st0">&quot;media/&quot;</span>,<span class="re0">$imageUrl</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// $page-&gt;drawText($imageFile , 65, $pdf-&gt;y-$shift{1}, &#8216;UTF-8&#8242;);</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$imageWidth</span> = <span class="nu0">100</span>; <span class="re0">$imageHeight</span> = <span class="nu0">50</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$image</span> = Zend_Pdf_Image::<span class="me2">imageWithPath</span><span class="br0">&#40;</span><span class="re0">$imageFile</span>,<span class="re0">$imageWidth</span>,<span class="re0">$imageHeight</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$y</span>=<span class="re0">$pdf</span>-&gt;<span class="me1">y</span> &#8211; <span class="re0">$imageHeight</span> /<span class="nu0">3</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$page</span>-&gt;<span class="me1">drawImage</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">35</span>,<span class="re0">$y</span>, <span class="nu0">35</span>+ <span class="re0">$imageWidth</span> / <span class="nu0">2</span>, <span class="re0">$y</span> + <span class="re0">$imageHeight</span>/<span class="nu0">2</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//&lt;/display image&gt;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/06/magento-display-product-image-on-invoice-shipping-pdf/873/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Magento one page checkout : display shopping cart details in sidebar</title>
		<link>http://www.webmasterbulletin.net/2009/05/magento-one-page-checkout-display-shopping-cart-details-in-sidebar/867</link>
		<comments>http://www.webmasterbulletin.net/2009/05/magento-one-page-checkout-display-shopping-cart-details-in-sidebar/867#comments</comments>
		<pubDate>Wed, 27 May 2009 14:20:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Web Components]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=867</guid>
		<description><![CDATA[
There are a lot of discussions going on about Magento&#8217;s one page checkout procedure : it is supposed to enhance customer payment experience by probviding ajax based single page order progress. But there are alos some discussions in the forum on how to enhance this process which is quite unusual and might discourage some customers. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.webmasterbulletin.net/wp-content/uploads/2009/05/magentoonepagecheckoutorder.jpg" rel="lightbox[867]"><img class="size-full wp-image-869 aligncenter" title="magentoonepagecheckoutorder" src="http://www.webmasterbulletin.net/wp-content/uploads/2009/05/magentoonepagecheckoutorder.jpg" alt="magentoonepagecheckoutorder" width="500" height="318" /></a></p>
<p>There are a lot of discussions going on about Magento&#8217;s one page checkout procedure : it is supposed to enhance customer payment experience by probviding ajax based single page order progress. But there are alos some discussions in the forum on how to enhance this process which is quite unusual and might discourage some customers. In a previous post I reviewed the code that produces sidebar shopping cart in default pages with right margin. The solution below explains how to add a full shopping cart display for the customer&#8217;s that trying to complete an order.</p>
<p><span id="more-867"></span></p>
<p><strong>Full template vs AJAX based loading</strong></p>
<p>The code that builds the one page checkout (checkout/onepage/) sidebar display is made of two separate components :</p>
<ul>
<li>the first loading of the page is a full template loading, meaning every component of the page is loaded at once, and returned to the browser via a standard HTTP request, returning HTML. The HTML produced at this stage for the right column is described in the <strong>checkout_onepage_index section of the layout/checkout.xml </strong>configuration file. I added the shopping cart display by  simply adding a block to the right :
<pre>       &lt;reference name="right"&gt;
            &lt;action method="unsetChildren"&gt;&lt;/action&gt;
            &lt;block type="checkout/onepage_progress" name="checkout.progress" before="-" template="checkout/onepage/progress.phtml"/&gt;
            &lt;block type="checkout/cart_sidebar" before="-" name="catalog.cart.sidebar"    template="checkout/cart/sidebarCheckout.phtml"/&gt;
      &lt;/reference&gt;</pre>
</li>
<li>Following steps are processed via AJAX calls (function reloadProgressBlock in opcheckout.js) that invoke the the<strong> checkout_onepage_progress section of the layout/checkout.xml </strong>configuration file. Below you&#8217;ll find the same code added to this section, that adds a cart block to the raw HTML returned by this AJAX call.
<pre>   &lt;checkout_onepage_progress&gt;
        &lt;!-- Mage_Checkout --&gt;
        &lt;remove name="right"/&gt;
        &lt;remove name="left"/&gt;
 &lt;block type="checkout/cart_sidebar" output="toHtml"  name="catalog.cart.sidebar"    template="checkout/cart/sidebarCheckout.phtml"/&gt;

        &lt;block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress.phtml"&gt;
            &lt;block type="checkout/onepage_payment_info" name="payment_info"&gt;
                &lt;action method="setInfoTemplate"&gt;&lt;method&gt;&lt;/method&gt;&lt;template&gt;&lt;/template&gt;&lt;/action&gt;
            &lt;/block&gt;
        &lt;/block&gt;

    &lt;/checkout_onepage_progress&gt;</pre>
</li>
</ul>
<p>You will notice that we deliberately position the sidebar cart XML block , in the first case after, and in the second case before other blocks, so that this block always appears first on your <strong>one page chcekout right margin</strong>. What you finally need now in order for this to work is to code the sidebarCheckout template : take the checkout/cart/sidebar.phtml  template and modify the display to produce best reassuring order total for your customer before he finally decides to pay !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/05/magento-one-page-checkout-display-shopping-cart-details-in-sidebar/867/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Weekly news : ZF 1.8, EXTJS 3, Magento enterprise</title>
		<link>http://www.webmasterbulletin.net/2009/04/weekly-news-zf-18-extjs-3-magento-enterprise/766</link>
		<comments>http://www.webmasterbulletin.net/2009/04/weekly-news-zf-18-extjs-3-magento-enterprise/766#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:03:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=766</guid>
		<description><![CDATA[This month has been full of releases. Zend Framework is reaching V1.8 featuring the new Zend_Application interface that instantiantes a preconfigured bootstrap when used via the Zend Tool generator (tutorial here in french). EXT JS, the popular and controversial semi commercial javscript library has reached a new milestone with a 3PR1 release. We&#8217;ve already mentioned [...]]]></description>
			<content:encoded><![CDATA[<p>This month has been full of releases. Zend Framework is reaching V1.8 featuring the new Zend_Application interface that instantiantes a preconfigured bootstrap when used via the Zend Tool generator (<a href="http://www.webmasterbulletin.net/2009/02/magento-cms-2-methods-for-static-blocks/657">tutorial here in french</a>). EXT JS, the popular and controversial semi commercial javscript library has reached a new milestone with a 3PR1 release. We&#8217;ve already mentioned <a href="http://www.webmasterbulletin.net/2008/09/web-developers-have-a-look-at-tine-20/247">Tine20</a>, a new version is out but you want to keep that link where the developers publish a tutorial that explains <a href="http://www.tine20.org/wiki/index.php/Getting_started_with_ExtJS_and_Zend_Framework">how to combine EXT JS with Zend Framework</a>.  On the Magento side, version 1.3.1 is out, should fix a lot of bugs but more importantly is the fact that Magento has finally annouced the release of an enterprise edition that starts at 8900$ per server. Nice to know that the company behind the most popular opensource ecommerce application is going to make money on a business model that proves to encourage customers and technicians to adopt this solution for long term development. Redhat did it and it&#8217;s still around with the FEDORA that&#8217;s developped independently. Let&#8217;s hope some features annouced for Magento enterprise will come one day to the opensource product as affordable extensions : Administrator Permission Roles on Website and Store Levels, Private Sales including Events, Invitations and Category access permissions, Category View and Purchase permissions per on customer group , Gift Certificates/Cards  are among features that certainly justify some financial investment. Currently we have the<em><a href="http://www.magentocommerce.com/extension/635/customer-groups-configurable-catalog"> Customer Groups Configurable Catalog extension</a></em> , but obviously you&#8217;d have to test that before going ahead in production.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/04/weekly-news-zf-18-extjs-3-magento-enterprise/766/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ajaXplorer vs extplorer vs ajax file manager</title>
		<link>http://www.webmasterbulletin.net/2009/03/ajaxplorer-vs-extplorer-vs-ajax-file-manager/707</link>
		<comments>http://www.webmasterbulletin.net/2009/03/ajaxplorer-vs-extplorer-vs-ajax-file-manager/707#comments</comments>
		<pubDate>Tue, 17 Mar 2009 09:55:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Components]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=707</guid>
		<description><![CDATA[
We&#8217;ve not covered PHP based file explorers yet : they are indeed an essential component of any serious web application. When Ajax comes in the game, browsing, uploading and dealing with files is as easy online as it can be on your desktop. Thos willing to develop might be interested in extjs grid views, while [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.webmasterbulletin.net/wp-content/uploads/2009/03/ajaxplorer.jpg" rel="lightbox[707]"><img class="aligncenter size-full wp-image-711" title="ajaxplorer" src="http://www.webmasterbulletin.net/wp-content/uploads/2009/03/ajaxplorer.jpg" alt="ajaxplorer" width="490" height="309" /></a></p>
<p>We&#8217;ve not covered PHP based file explorers yet : they are indeed an essential component of any serious web application. When Ajax comes in the game, browsing, uploading and dealing with files is as easy online as it can be on your desktop. Thos willing to develop might be interested in<a href="http://www.webmasterbulletin.net/2008/11/ext-js-examples-and-extensions/445"> extjs grid views</a>, while application developpers looking for a working and bug free component have the choice of two or three opensource components available. All of them have the following features</p>
<ul>
<li>access control</li>
<li>flash based and  / or FTP upload for big files </li>
<li>file viewing / previewing</li>
<li>drag and drop folders</li>
</ul>
<p>The choice is rought. For integration into a Wysiwyg editor such as FCKEDitor, we preferred the  Ajax file manager from <a href="http://www.phpletter.com/Demo/Ajax-File--Manager/">PHPLetter </a>because it is light and does not come with a huge infrastructure. For a quick access to web based files, we prefered <a href="http://extplorer.sourceforge.net/">ExtPLorer </a>because the interface is based on the famous ext js library. As a new challenger on this area, <a href="http://www.ajaxplorer.info">ajaXplorer</a> comes with a nice polished layout (picture above), a MP3 player (DEWPLayer) and a FLV player. But lacks translation into most languages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/03/ajaxplorer-vs-extplorer-vs-ajax-file-manager/707/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento custom attributes display on product page</title>
		<link>http://www.webmasterbulletin.net/2009/03/magento-custom-attributes-display-on-product-page/693</link>
		<comments>http://www.webmasterbulletin.net/2009/03/magento-custom-attributes-display-on-product-page/693#comments</comments>
		<pubDate>Wed, 11 Mar 2009 17:03:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hosted applications]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Web Components]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://www.webmasterbulletin.net/?p=693</guid>
		<description><![CDATA[The flexibility created by the attribute feature in Magento allows limitless possibilities : vairous product types can be created and each of them can go with specific attributes, meaning specific form fields for the admin, that are inserted in the product view (template/product/view.phtml) for public display. The functions availble for each user defined attributes are [...]]]></description>
			<content:encoded><![CDATA[<p>The flexibility created by the attribute feature in Magento allows limitless possibilities : vairous product types can be created and each of them can go with specific attributes, meaning specific form fields for the admin, that are inserted in the product view (template/product/view.phtml) for public display. The functions availble for each user defined attributes are very simple to guess : they are dynamically created for each attribute create using , as explained in the <a href="http://devzone.pratthost.com/2008/11/03/magento-displaying-custom-attributes-on-product-view/" target="_blank">Pratthost developer zone blog</a>&#8230;<br />
<span id="more-693"></span></p>
<blockquote><p>
<span style="color: #000000; font-weight: bold;">&#8220;<em>&lt;?php</em></span><em> <span style="color: #990000;">echo</span> <span style="color: #000088;">$_product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAttributeName</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></em><br />
<em>There is one thing different here though. If your Attribute Code is “shirt_size”, then you would use getShirtSize(). Remove the underscores and capitalize the first letter of each word. It is picky that way. if you use getshirtsize(), it won’t work.</em></p>
<p><em>If you are using a dropdown or a multiple select, you have to call it a little differently:</em></p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre><em>
</em></pre>
</td>
<td class="code">
<em><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">echo</span> <span style="color: #000088;">$_product</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAttributeText</span><span style="color: #009900;">(</span><span style="color: #0000ff;">&#8217;shirt_size&#8217;</span><span style="color: #009900;">)</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></em>
</td>
</tr>
</tbody>
</table>
</div>
<p><em>This method requires the actual Attribute Code. If you are displaying the value from a dropdown, you’ll get exactly what you need with this call. If you are wanting to display the values from a multiple select, it will return an array.</em>&#8220;</p></blockquote>
<p><strong>Inner workings</strong></p>
<p>How does this work ? well the attribute function is a method of the Mage_Catalog_Model_Product, which isn extension of Mage_Catalog_Model_Abstract, itself extending Mage_Core_Model_Abstract, itself extending Varien_Object where we find the famous __call function that traps all undeclared or undefined  functions from the class : this is where the logic is implemented and we see that any undeclared function starting with get is defined to fin the associated data , optionnally using provided arguments :</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp;<span class="kw2">public</span> <span class="kw2">function</span> __call<span class="br0">&#40;</span><span class="re0">$method</span>, <span class="re0">$args</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$method</span>, <span class="nu0">0</span>, <span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#8216;get&#8217;</span> :</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::start(&#8217;GETTER: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$key</span> = <span class="re0">$this</span>-&gt;_underscore<span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$method</span>,<span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$data</span> = <span class="re0">$this</span>-&gt;<span class="me1">getData</span><span class="br0">&#40;</span><span class="re0">$key</span>, <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span> ? <span class="re0">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> : <span class="kw2">null</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::stop(&#8217;GETTER: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$data</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#8217;set&#8217;</span> :</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::start(&#8217;SETTER: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$key</span> = <span class="re0">$this</span>-&gt;_underscore<span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$method</span>,<span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span> = <span class="re0">$this</span>-&gt;<span class="me1">setData</span><span class="br0">&#40;</span><span class="re0">$key</span>, <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span> ? <span class="re0">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> : <span class="kw2">null</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::stop(&#8217;SETTER: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$result</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#8216;uns&#8217;</span> :</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::start(&#8217;UNS: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$key</span> = <span class="re0">$this</span>-&gt;_underscore<span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$method</span>,<span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span> = <span class="re0">$this</span>-&gt;<span class="me1">unsetData</span><span class="br0">&#40;</span><span class="re0">$key</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::stop(&#8217;UNS: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$result</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#8216;has&#8217;</span> :</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::start(&#8217;HAS: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$key</span> = <span class="re0">$this</span>-&gt;_underscore<span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$method</span>,<span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Varien_Profiler::stop(&#8217;HAS: &#8216;.get_class($this).&#8217;::&#8217;.$method);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;_data<span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; throw <span class="kw2">new</span> Varien_Exception<span class="br0">&#40;</span><span class="st0">&quot;Invalid method &quot;</span>.<a href="http://www.php.net/get_class"><span class="kw3">get_class</span></a><span class="br0">&#40;</span><span class="re0">$this</span><span class="br0">&#41;</span>.<span class="st0">&quot;::&quot;</span>.<span class="re0">$method</span>.<span class="st0">&quot;(&quot;</span>.<a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$args</span>,<span class="nu0">1</span><span class="br0">&#41;</span>.<span class="st0">&quot;)&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.webmasterbulletin.net/2009/03/magento-custom-attributes-display-on-product-page/693/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
