<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>LipsiADMIN</title>
    <link>http://lipsiadmin.com</link>
    <language>it-IT</language>
    <ttl>40</ttl>
    <description>Blog dedicato della LipsiaSoft s.r.l. dedicato alle tecnologie web come ruby on rails ...</description>
    <item>
      <title>Padrino: Framework with Admin</title>
      <description>&lt;p&gt;We are pleased to announce the official web site of Padrino Framework: &lt;a href=&quot;http://www.padrinorb.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;www.padrinorb.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this site you can find a blog tutorial with &lt;b&gt;12 minute screencast&lt;/b&gt;, a lot of guides and much more...&lt;/p&gt;
&lt;p&gt;Don't forget that &lt;strong&gt;Padrino&lt;/strong&gt; is the first Ruby Framework with a bundled admin.&lt;/p&gt;
&lt;p&gt;Some links:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://github.com/padrino/padrino-framework&quot;&gt;Repository&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.padrinorb.com/blog/padrino-0-9-9-released-with-screencast&quot;&gt;Blog Tutorial (With HD screencast)&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.padrinorb.com/guides&quot;&gt;Guides Section&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.padrinorb.com/blog&quot;&gt;Blog&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.twitter.com/padrinorb&quot;&gt;Twitter&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Fri, 02 Apr 2010 00:46:26 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:263</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2010/4/2/263-padrino-framework-with-admin</link>
      <category>News</category>
      <category>padrino</category>
      <category> sinatra</category>
      <category> ruby</category>
      <category> django</category>
    </item>
    <item>
      <title>Padrino Framework</title>
      <description>&lt;p&gt;Worth noting here that LipsiADMIN is still undergoing bug fixes and occasional development.&lt;/p&gt;
&lt;p&gt;
  However, I want to point out that this project  is essentially made obsolete by another project that I am working on (with Nathan and others) called the
  &lt;a href=&quot;http://padrino.github.com&quot; target=&quot;_blank&quot;&gt;Padrino Framework&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Padrino&lt;/strong&gt; is definately the place to look in the future for a modular extension to &lt;strong&gt;Sinatra&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Note that Padrino contains everything from LipsiADMIN but is far more powerful and larger in scope.&lt;/p&gt;
&lt;p&gt;Padrino is still early in development but is worth taking a look at.&lt;/p&gt;
&lt;p&gt;
  The idea for Padrino is to start with Sinatra and follow that philosophy but to super-charge the functionality adding support for:
  development code reloading, advanced route definitions, I18n localization support, baked-in orm support, baked-in code generators, multi-app support, admin dashboard, authentication logic, view
  helpers, and more.
&lt;/p&gt;
&lt;p&gt;
  With &lt;strong&gt;Padrino Admin&lt;/strong&gt; more simple manage uploads (with upload progress) and habtm/belongs_to relations in ExtJS windows.
&lt;/p&gt;
&lt;p&gt;
  Try Padrino and have fun with Admin requires few seconds, follow this:
  &lt;a href=&quot;http://gist.github.com/307591&quot; target=&quot;_blank&quot;&gt;&lt;a href=&quot;http://gist.github.com/307591&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://gist.github.com/307591&lt;/a&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Feel free to use LipsiADMIN for now but if you enjoy this and get curious, please contribute to Padrino or at least let us know what you think!&lt;/p&gt;
&lt;p&gt;See more on: &lt;a href=&quot;http://padrino.github.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://padrino.github.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Follow us: &lt;a href=&quot;http://www.twitter.com/padrinorb&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.twitter.com/padrinorb&lt;/a&gt;&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Thu, 18 Feb 2010 14:46:08 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:262</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2010/2/18/262-padrino-framework</link>
      <category>News</category>
      <category>Padrino</category>
      <category> Ruby</category>
      <category> Framework</category>
      <category> Sinatra</category>
      <category> Admin</category>
      <category> Generators</category>
      <category> ExtJS</category>
    </item>
    <item>
      <title>ScreenCast - Basic Concepts</title>
      <description>&lt;p&gt;In this screen cast we demonstrate some basic concepts how to use LipsiADMIN as a scaffold for the backend of your rails app.&lt;/p&gt;

&lt;p&gt;In particular we focus on:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Start a new project and attach LipsiADMIN&lt;/li&gt;
  &lt;li&gt;Add new models and scaffold them&lt;/li&gt;
  &lt;li&gt;Add some relations for explain how we can easily make associations with LipsiADMIN&lt;/li&gt;
  &lt;li&gt;Create a editable grid&lt;/li&gt;
  &lt;li&gt;Create and Manage roles and permission&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this screencast we use Rails 2.3.5, ExtJS 3.1, Osx Snow Leopard, TextMate.&lt;/p&gt;&lt;p&gt;
 &lt;object width=&quot;620&quot; height=&quot;465&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=8328962&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=8328962&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;620&quot; height=&quot;465&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Tue, 22 Dec 2009 15:00:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:241</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/12/22/241-screencast-basic-concepts</link>
      <category>How To</category>
      <category>lipsiadmin</category>
      <category> extjs</category>
      <category> rails</category>
      <category> scaffold</category>
      <category> ruby</category>
      <category> screencast</category>
      <category> showcase</category>
      <category> example</category>
      <category> howto</category>
    </item>
    <item>
      <title>Lipsiadmin 5.1.1</title>
      <description>We release on
&lt;a href=&quot;http://github.com/Lipsiasoft/lipsiadmin&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;
, on
&lt;a href=&quot;http://gemcutter.org/gems/lipsiadmin&quot; target=&quot;_blank&quot;&gt;Gemcutter&lt;/a&gt;
and on
&lt;a href=&quot;http://rubyforge.org/projects/lipsiadmin&quot; target=&quot;_blank&quot;&gt;RubyForge&lt;/a&gt;
a new version of
&lt;b&gt;LipsiADMIN.&lt;/b&gt;
&lt;p&gt;The most important thing is that this 5.1.1 version include ExtJS 3.1+&lt;/p&gt;
&lt;p&gt;The second important thing is that now &lt;b&gt;LipsiADMIN&lt;/b&gt; grids save in the state of the search so useful when we do refresh.&lt;/p&gt;
&lt;h1&gt;Changelog&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;Updated ExtJS to 3.1+ Version&lt;/li&gt;
  &lt;li&gt;Updated ExtJS CSS according to new 3.1 Version&lt;/li&gt;
  &lt;li&gt;Fixed a small problem with ExtJS and our standard.css with inline forms.&lt;/li&gt;
  &lt;li&gt;Updated Backend.js now it's more clean and fast.&lt;/li&gt;
  &lt;li&gt;Grid now can store the value of search field in a grid. Useful when refreshing.&lt;/li&gt;
&lt;/ul&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Fri, 18 Dec 2009 21:00:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:240</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/12/18/240-lipsiadmin-5-1-1</link>
      <category>News</category>
      <category>lipsiadmin</category>
      <category> extjs</category>
      <category> rails</category>
      <category> scaffold</category>
      <category> ruby</category>
    </item>
    <item>
      <title>ExtJS 3.1 Released</title>
      <description>Yesterday ExtJS team release a new version of their beautiful library.
&lt;a href=&quot;http://www.extjs.com/blog/2009/12/17/ext-js-3-1-massive-memory-improvements-treegrid-and-more&#8230;/&quot; target=&quot;_blank&quot;&gt;Here the Blog Post.&lt;/a&gt;
&lt;p&gt;Our team is working in a new version of &lt;b&gt;LipsiADMIN&lt;/b&gt; that include it. With new exciting features!!&lt;/p&gt;
&lt;p&gt;Here the change log of ExtJS 3.1&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Internet Explorer Memory Improvements&lt;/li&gt;
  &lt;li&gt;Optimized Layouts&lt;/li&gt;
  &lt;li&gt;EventManager Refactor&lt;/li&gt;
  &lt;li&gt;Improved Flexibility&lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.extjs.com/deploy/dev/examples/treegrid/treegrid.html&quot; target=&quot;_blank&quot;&gt;New TreeGrid Extension&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.extjs.com/deploy/dev/examples/grid/locking-grid.html&quot; target=&quot;_blank&quot;&gt;Locking Grid Columns&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://www.extjs.com/deploy/dev/examples/grid/ColumnHeaderGroup.html&quot; target=&quot;_blank&quot;&gt;Grid Column Grouping Plugin&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Summary&lt;/h1&gt;
&lt;p&gt;
  With 3.1 we took a deep look into optimizing many algorithms to improve IE support, overall performance, and introducing new functionality. We think these enhancements will greatly improve your user&#8217;s productivity while supporting faster, more robust applications. We are also still hard at work on the Ext Designer, which we hope to debut in the next few months. Make sure to update your version today and check out the new features for yourself.
&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Fri, 18 Dec 2009 15:00:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:239</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/12/18/239-extjs-3-1-released</link>
      <category>News</category>
      <category>extjs</category>
      <category> extjs 3.1</category>
      <category> rails</category>
      <category> lipsiadmin</category>
      <category> backend</category>
      <category> extend</category>
    </item>
    <item>
      <title>Lipsiadmin 5.1.0</title>
      <description>We release on
&lt;a href=&quot;http://github.com/Lipsiasoft/lipsiadmin&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;
, on
&lt;a href=&quot;http://gemcutter.org/gems/lipsiadmin&quot; target=&quot;_blank&quot;&gt;Gemcutter&lt;/a&gt;
and on
&lt;a href=&quot;http://rubyforge.org/projects/lipsiadmin&quot; target=&quot;_blank&quot;&gt;RubyForge&lt;/a&gt;
a new version of
&lt;b&gt;LipsiADMIN.&lt;/b&gt;
&lt;ul&gt;
  &lt;li&gt;This release only fix a problem with title helpers when a string contains dot chars.&lt;/li&gt;
&lt;/ul&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Fri, 18 Dec 2009 14:30:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:238</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/12/18/238-lipsiadmin-5-1-0</link>
      <category>News</category>
      <category>lipsiadmin</category>
      <category> extjs</category>
      <category> rails</category>
      <category> scaffold</category>
      <category> ruby</category>
    </item>
    <item>
      <title>Lipsiadmin 5.0.9</title>
      <description>&lt;p&gt;We have updated Lipsiadmin.&lt;/p&gt;
&lt;p&gt;Here the small changelog:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Fixed an error in lipsiadmin default locales&lt;/li&gt;
  &lt;li&gt;Added Template Paths for grids and custom template for grid [Ragunalth]&lt;/li&gt;
  &lt;li&gt;Added German Translations [Peter]&lt;/li&gt;
  &lt;li&gt;Aliased Methods named_scope search to ext_search and paginate to ext_paginate to avoid conflicts.&lt;/li&gt;
  &lt;li&gt;Updated the Readme&lt;/li&gt;
  &lt;li&gt;Removed an unusued back_to helper&lt;/li&gt;
  &lt;li&gt;Fixed a bug with simple_error_messages_for [joe1chen]&lt;/li&gt;
  &lt;li&gt;Fixed a bug in generators on Windows [Paolo Angelini]&lt;/li&gt;
&lt;/ul&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Sun, 06 Dec 2009 20:30:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:237</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/12/6/237-lipsiadmin-5-0-9</link>
      <category>News</category>
      <category>lipsiadmin</category>
      <category> extjs</category>
      <category> rails</category>
      <category> scaffold</category>
      <category> ruby</category>
    </item>
    <item>
      <title>New Way to Write JSON</title>
      <description>I thinked a lot in this days a new way for write girds and json configurations.
See some examples and tell us your opinion.
&lt;p&gt;Ruby Version (the version included in LipsiADMIN):&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;bool_fn = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;function(v, p, r){ var tmp = (v!=undefined &amp;amp;&amp;amp; v!=''); return Ext.util.Format.boolRenderer(tmp, p, r) }&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;.to_l

&lt;span class=&quot;iv&quot;&gt;@column_store&lt;/span&gt; = column_store_for &lt;span class=&quot;co&quot;&gt;Order&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt; |cm|
  cm.add &lt;span class=&quot;sy&quot;&gt;:custom_id&lt;/span&gt;
  cm.add &lt;span class=&quot;sy&quot;&gt;:invoice_name&lt;/span&gt;
  cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,                                             &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt;  =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:center&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:dataIndex&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:order_from&lt;/span&gt;
  cm.add &lt;span class=&quot;sy&quot;&gt;:package_weigth&lt;/span&gt;,                                    &lt;span class=&quot;sy&quot;&gt;:hidden&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;true&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt;    =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:center&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;order_items.first.delivery_name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Spedizione&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:hidden&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;true&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:dataIndex&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;orders.order_items.delivery_name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;sy&quot;&gt;:payment_name&lt;/span&gt;,                                      &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt;  =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:center&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;ecommerce.name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,  &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Ecommerce&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,                     &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt;  =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:center&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;ebay_order.id&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,               &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Cod. Ebay Ord.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:hidden&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;true&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;sy&quot;&gt;:total&lt;/span&gt;,            &lt;span class=&quot;sy&quot;&gt;:renderer&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:eur_money&lt;/span&gt;,  &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:right&lt;/span&gt;,  &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt;  =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:right&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;has_invoice?&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:renderer&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:boolean&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:center&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:editor&lt;/span&gt; =&amp;gt; { &lt;span class=&quot;sy&quot;&gt;:xtype&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:checkbox&lt;/span&gt; }, 
                            &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:header&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Fatturato&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:name&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;order[invoice_attribute][date]&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, 
                            &lt;span class=&quot;sy&quot;&gt;:dataIndex&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;orders.has_invoice&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
  cm.add &lt;span class=&quot;sy&quot;&gt;:shipped&lt;/span&gt;,          &lt;span class=&quot;sy&quot;&gt;:renderer&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:boolean&lt;/span&gt;,    &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:center&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:editor&lt;/span&gt; =&amp;gt; { &lt;span class=&quot;sy&quot;&gt;:xtype&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:checkbox&lt;/span&gt; }, &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;false&lt;/span&gt;
  cm.add &lt;span class=&quot;sy&quot;&gt;:updated_at&lt;/span&gt;,       &lt;span class=&quot;sy&quot;&gt;:renderer&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:datetime&lt;/span&gt;,   &lt;span class=&quot;sy&quot;&gt;:align&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:right&lt;/span&gt;,  &lt;span class=&quot;sy&quot;&gt;:hidden&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Yaml Version:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;ke&quot;&gt;renderers&lt;/span&gt;:
  &lt;span class=&quot;ke&quot;&gt;boolean&lt;/span&gt;: &lt;span class=&quot;v&quot;&gt;&amp;amp;boolean_renderer&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;renderer&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;|&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;__js__&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;
      function(v, p, r){ 
        var tmp = (v!=undefined &amp;amp;&amp;amp; v!='');
        return Ext.util.Format.boolRenderer(tmp, p, r) 
      }&lt;/span&gt;

&lt;span class=&quot;ke&quot;&gt;editors&lt;/span&gt;:
  &lt;span class=&quot;ke&quot;&gt;checkbox&lt;/span&gt;: &lt;span class=&quot;v&quot;&gt;&amp;amp;checkbox&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;xtype&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;checkbox&lt;/span&gt;

&lt;span class=&quot;ke&quot;&gt;columns&lt;/span&gt;:
  - &lt;span class=&quot;s&quot;&gt;id: custom_id&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: invoice_name&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: name&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;dataIndex&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;order_from&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;center&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: package_weigth&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;hidden&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;center&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;sortable&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;false&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: delivery_name&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;dataIndex&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;order_items.first.delivery_name&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;header&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;Spedizione&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: payment_name&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;center&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;sortable&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;false&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: ecommerce_name&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;dataIndex&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;ecommerce.name&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;header&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;Ecommerce&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;center&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;sortable&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;false&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: ebay_order_id&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;dataIndex&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;ebay_order.id&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;header&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;Cod. Ebay Ord.&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;hidden&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;sortable&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;false&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: total&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;renderer&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;eur_money&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;right&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;sortable&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: has_invoice&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;method&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;has_invoice?&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;renderer&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;boolean&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;center&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;editor&lt;/span&gt;: &lt;span class=&quot;gv&quot;&gt;*checkbox&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;sortable&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;header&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;Fatturato&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;name&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;order[invoice_attribute][date]&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: shipped&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;renderer&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;boolean&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;center&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: paid_time&lt;/span&gt;
    &lt;span class=&quot;cv&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;: &lt;span class=&quot;gv&quot;&gt;*boolean_renderer&lt;/span&gt;
  - &lt;span class=&quot;s&quot;&gt;id: updated_at&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;renderer&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;datetime&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;align&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;right&lt;/span&gt;
    &lt;span class=&quot;ke&quot;&gt;hidden&lt;/span&gt;: &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;My choice is yaml version, more concise and more clear.&lt;/p&gt;
&lt;p&gt;And you? What do you prefer?&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Tue, 01 Dec 2009 15:43:26 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:236</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/12/1/236-new-way-to-write-json</link>
      <category>News</category>
      <category>rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
      <category> json</category>
    </item>
    <item>
      <title>Extend ExtJs grids</title>
      <description>&lt;p&gt;
  &lt;a href=&quot;http://groups.google.com/group/lipsiadmin/browse_thread/thread/2b3fb9880953bb55&quot; target=&quot;_blank&quot;&gt;Mirec&lt;/a&gt;
  ask us:
&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;I created some custom model attributes in model.rb file, but i found no way to include those in the list view.&lt;/p&gt;
  &lt;p&gt;Whatever i try it gives me translation error.&lt;/p&gt;
  &lt;p&gt;Is this implemented, or is there a workaround?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For this reason we want show you how you can easy extend the &lt;b&gt;ExtJs&lt;/b&gt; GridPanel.&lt;/p&gt;
&lt;h2&gt;Case:&lt;/h2&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;c&quot;&gt;# models/account.rb&lt;/span&gt;
&lt;span class=&quot;r&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;cl&quot;&gt;Account&lt;/span&gt; &amp;lt; &lt;span class=&quot;co&quot;&gt;ActiveRecord&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Base&lt;/span&gt;
  belongs_to &lt;span class=&quot;sy&quot;&gt;:category&lt;/span&gt;
  ... 
  &lt;span class=&quot;r&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;fu&quot;&gt;full_name&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;name&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt; &lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;surname&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;.strip
  &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;So:&lt;/h2&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&amp;gt; &lt;span class=&quot;co&quot;&gt;Account&lt;/span&gt;.first.category.name =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;my fun category&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&amp;gt; &lt;span class=&quot;co&quot;&gt;Account&lt;/span&gt;.first.full_name =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;name surname&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;Then:&lt;/h2&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;c&quot;&gt;# controllers/accounts_controller.rb&lt;/span&gt;
&lt;span class=&quot;r&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;cl&quot;&gt;Backend::AccountsController&lt;/span&gt; &amp;lt; &lt;span class=&quot;co&quot;&gt;BackendController&lt;/span&gt;

  &lt;span class=&quot;r&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;fu&quot;&gt;index&lt;/span&gt;
    params[&lt;span class=&quot;sy&quot;&gt;:limit&lt;/span&gt;] ||= &lt;span class=&quot;i&quot;&gt;50&lt;/span&gt;
    
    &lt;span class=&quot;iv&quot;&gt;@column_store&lt;/span&gt; = column_store_for &lt;span class=&quot;co&quot;&gt;EbayEntry&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt; |cm|
            &lt;span class=&quot;c&quot;&gt;# Method           # Header      #Options&lt;/span&gt;
      cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;category.name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,  &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Category&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,   &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;true&lt;/span&gt;
      cm.add &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;full_name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,      &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Full Name&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,  &lt;span class=&quot;sy&quot;&gt;:sortable&lt;/span&gt; =&amp;gt; &lt;span class=&quot;pc&quot;&gt;true&lt;/span&gt;, 
                                             &lt;span class=&quot;sy&quot;&gt;:dataIndex&lt;/span&gt; =&amp;gt; [&lt;span class=&quot;sy&quot;&gt;:name&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:surname&lt;/span&gt;]
      ...
      cm.add &lt;span class=&quot;sy&quot;&gt;:age&lt;/span&gt;
      cm.add &lt;span class=&quot;sy&quot;&gt;:sex&lt;/span&gt;
      cm.add &lt;span class=&quot;sy&quot;&gt;:other_column_of_my_model&lt;/span&gt;
    &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;

    respond_to &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt; |format|
      format.js 
      format.json &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt;
        render &lt;span class=&quot;sy&quot;&gt;:json&lt;/span&gt; =&amp;gt; &lt;span class=&quot;iv&quot;&gt;@column_store&lt;/span&gt;.store_data(params, &lt;span class=&quot;sy&quot;&gt;:joins&lt;/span&gt; =&amp;gt; &lt;span class=&quot;sy&quot;&gt;:category&lt;/span&gt;)
      &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;Considerations&lt;/h2&gt;
&lt;p&gt;If you quote something in the column_store (like: &quot;full_name&quot;), our extjs controller try to do some like: mymodel.send(:mycustom_method)&lt;/p&gt;
&lt;p&gt;In column &quot;Full Name&quot; we have specified &lt;b&gt;:dataIndex&lt;/b&gt; because in this way the integrated search of our grid can query the database like:&lt;/p&gt;

&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;r&quot;&gt;WHERE&lt;/span&gt; accounts.name &lt;span class=&quot;r&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;%name%&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;OR&lt;/span&gt; accounts.surname &lt;span class=&quot;r&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;%name%&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;We also be able to make a custom dataIndex like: dataIndex =&gt; &quot;accounts.mycustomfield&quot;, so the query will be:&lt;/p&gt;

&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;r&quot;&gt;WHERE&lt;/span&gt; accounts.mycustomfield &lt;span class=&quot;r&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;%name%&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Last important thing was: cm.add &quot;category.name&quot;&lt;/p&gt;

&lt;p&gt;Our Ext controller is intelligent and automatically create a correct dataIndex in our case: categories.name&lt;/p&gt;

&lt;p&gt;The dataIndex is also the field of a sql query, so for that is also necessary join or include the category table, we do that: @column_store.store_data(params, :joins =&gt; :category)&lt;/p&gt;
&lt;p&gt;The final result is:&lt;/p&gt;

&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;r&quot;&gt;SELECT&lt;/span&gt; *
  &lt;span class=&quot;r&quot;&gt;FROM&lt;/span&gt; accounts &lt;span class=&quot;r&quot;&gt;INNER&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;JOIN&lt;/span&gt; categories &lt;span class=&quot;r&quot;&gt;ON&lt;/span&gt; account.category_id = categories.id
&lt;span class=&quot;r&quot;&gt;WHERE&lt;/span&gt; 
  accounts.name &lt;span class=&quot;r&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;%name%&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;OR&lt;/span&gt; 
  accounts.surname &lt;span class=&quot;r&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;%name%&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;OR&lt;/span&gt; 
  categories.name &lt;span class=&quot;r&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;%name%&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;So remember, with &lt;b&gt;quotation&lt;/b&gt; (&quot;mycustom_method&quot;) you can call any method of your model, with &lt;b&gt;dataIndex&lt;/b&gt; you can specify the field used for ordination and search&lt;/p&gt; &lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Thu, 01 Oct 2009 19:00:09 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:223</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/10/1/223-extend-extjs-grids</link>
      <category>How To</category>
      <category>rails 2.3</category>
      <category> I18n</category>
      <category> Ruby</category>
      <category> JRuby</category>
      <category> lipsiadmin</category>
      <category> extjs</category>
      <category> backends</category>
      <category> grids</category>
    </item>
    <item>
      <title>A Global .gitignore</title>
      <description>&lt;p&gt;Always we need a .gitignore in our repository.&lt;/p&gt;
&lt;p&gt;In 99% of cases is always the same&lt;/p&gt;
&lt;p&gt;So we can just write a time. Then always ignore those files system-wide.&lt;/p&gt;
&lt;p&gt;See how&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;er&quot;&gt;$&lt;/span&gt; vim ~&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.gitignore&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;and put&lt;/p&gt;

&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;*.cache
*.log
*.pid
tmp/**&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;*
.DS_Store
db&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;cstore/**
db/sphinx/**
public/uploads/*&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Then global ignore those file. From your console:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;git config --global core.excludesfile ~&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.gitignore&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Tue, 22 Sep 2009 11:30:34 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:222</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/9/22/222-a-global-gitignore</link>
      <category>Tips &amp;amp; Tricks</category>
      <category>git</category>
      <category> rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
    </item>
    <item>
      <title>Lipsiadmin 5.0.8</title>
      <description>&lt;p&gt;
  We have updated Lipsiadmin on
  &lt;a href=&quot;http://github.com/Lipsiasoft/lipsiadmin/tree/master&quot; target=&quot;_BLANK&quot;&gt;GitHub&lt;/a&gt;
  and also on
  &lt;a href=&quot;http://rubyforge.org/projects/lipsiadmin/&quot; target=&quot;_BLANK&quot;&gt;RubyForge&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Here the small changelog:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Changed the rake lipsiadmin:update:javascripts now update also backend.js.erb and locale.js.erb&lt;/li&gt;
  &lt;li&gt;
    Added a new frontend helper method for resize images on the fly:
    &lt;a href=&quot;http://api.lipsiadmin.com/classes/Lipsiadmin/View/Helpers/FrontendHelper.html#M000170&quot; target=&quot;_BLANK&quot;&gt;see api docs&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;Added new locales for rails 2.3.4&lt;/li&gt;
  &lt;li&gt;Fix stack overflow with prototype 1.6.1 on IE6/IE7&lt;/li&gt;
&lt;/ul&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Fri, 11 Sep 2009 07:31:30 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:221</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/9/11/221-lipsiadmin-5-0-8</link>
      <category>News</category>
      <category>rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
    </item>
    <item>
      <title>Lipsiadmin 5.0.7</title>
      <description>&lt;p&gt;
  We have updated Lipsiadmin on
  &lt;a href=&quot;http://github.com/Lipsiasoft/lipsiadmin/tree/master&quot; target=&quot;_BLANK&quot;&gt;GitHub&lt;/a&gt;
  and also on
  &lt;a href=&quot;http://rubyforge.org/projects/lipsiadmin/&quot; target=&quot;_BLANK&quot;&gt;RubyForge&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This version contains only few bug fix&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Fix some compatibility issues on IE6+&lt;/li&gt;
  &lt;li&gt;Fix stackoverflow with prototype&lt;/li&gt;
&lt;/ul&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Fri, 11 Sep 2009 07:29:28 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:220</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/9/11/220-lipsiadmin-5-0-7</link>
      <category>News</category>
      <category>rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
    </item>
    <item>
      <title>Thumbs on the Fly</title>
      <description>&lt;p&gt;When our staff build the frontend of a site is always necessary redefine the thumbs of an Image.&lt;/p&gt;
&lt;p&gt;99% of our customers change the size or the final layout is a little different&lt;/p&gt;
&lt;p&gt;
  It's true our attachment table can define thumbs and we can reprocess them like
  showed in this
  &lt;a href=&quot;/post/2009/7/23/142-reprocess-all-our-images&quot; target=&quot;_blank&quot;&gt;article&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;But if don't want every time add a new line in our code and reprocess all of them?&lt;/p&gt;
&lt;p&gt;If the image did't reside on our server?&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;image_tag(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/path/to/my/image.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:size&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;180#&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;image_tag(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&lt;a href=&quot;http://www.remote.com/image.png&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www.remote.com/image.png&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:size&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;180x180!&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Create on the fly (and once time) a new image in &lt;b&gt;our&lt;/b&gt; public folder&lt;/p&gt;

&lt;p&gt;For all this reasons I create a small but usefull helper&lt;/p&gt;

&lt;p&gt;The code is pretty documented&lt;/p&gt;

&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;require &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;open-uri&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;r&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;fu&quot;&gt;image_tag&lt;/span&gt;(source, options = {})
  options.symbolize_keys!
  &lt;span class=&quot;c&quot;&gt;# We set here the upload path&lt;/span&gt;
  upload_path = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;uploads/thumbs&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;c&quot;&gt;# Now we can create a thumb on the fly&lt;/span&gt;
  &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; options[&lt;span class=&quot;sy&quot;&gt;:size&lt;/span&gt;] || options[&lt;span class=&quot;sy&quot;&gt;:width&lt;/span&gt;] || options[&lt;span class=&quot;sy&quot;&gt;:height&lt;/span&gt;]
    &lt;span class=&quot;r&quot;&gt;begin&lt;/span&gt;
      geometry   = options[&lt;span class=&quot;sy&quot;&gt;:size&lt;/span&gt;]
      geometry ||= [options[&lt;span class=&quot;sy&quot;&gt;:width&lt;/span&gt;], options[&lt;span class=&quot;sy&quot;&gt;:height&lt;/span&gt;]].join(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
      filename   = &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.basename(source)
      &lt;span class=&quot;c&quot;&gt;# Checking if we have just process them &lt;/span&gt;
      &lt;span class=&quot;c&quot;&gt;# We don't want to do the same job two times&lt;/span&gt;
      &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.exist?(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/public/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;upload_path&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;geometry&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;filename&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
        options[&lt;span class=&quot;sy&quot;&gt;:src&lt;/span&gt;] = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;upload_path&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;geometry&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;filename&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;r&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# We need to create the thumb&lt;/span&gt;
        &lt;span class=&quot;co&quot;&gt;FileUtils&lt;/span&gt;.mkdir(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/tmp&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;r&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.exist?(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/tmp&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
        &lt;span class=&quot;c&quot;&gt;# We create a temp file of the original file&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# Notice that we can download them from an url! &lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# So this Image can reside anywhere on the web&lt;/span&gt;
        &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; source =~ &lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;URI&lt;/span&gt;.regexp&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;
          tmp = &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.new(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/tmp/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;filename&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
          tmp.write open(source).read
          tmp.close
        &lt;span class=&quot;r&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# If the image is local&lt;/span&gt;
          tmp = &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.open(&lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.join(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/public&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, 
                          path_to_image(source).gsub(&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\?&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\d&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)))
        &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# Now we generate a thumb with our Thumbnail Processor (based on Paperclip)&lt;/span&gt;
        thumb = &lt;span class=&quot;co&quot;&gt;Lipsiadmin&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Attachment&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Thumbnail&lt;/span&gt;.new(tmp, 
                                                      &lt;span class=&quot;sy&quot;&gt;:geometry&lt;/span&gt; =&amp;gt; geometry).make
        &lt;span class=&quot;c&quot;&gt;# We check if our dir exists&lt;/span&gt;
        &lt;span class=&quot;r&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.exist?(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/public/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;upload_path&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
          &lt;span class=&quot;co&quot;&gt;FileUtils&lt;/span&gt;.mkdir(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/public/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;upload_path&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
        &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# Now we put the image in our public path&lt;/span&gt;
        new_file_path = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;.root&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/public/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;upload_path&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;geometry&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;filename&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.open(new_file_path, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt; |f|
          f.write thumb.read
        &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# Finally we return the new image path&lt;/span&gt;
        options[&lt;span class=&quot;sy&quot;&gt;:src&lt;/span&gt;] = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;upload_path&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;geometry&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;filename&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;r&quot;&gt;rescue&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;Exception&lt;/span&gt; =&amp;gt; e
      options[&lt;span class=&quot;sy&quot;&gt;:src&lt;/span&gt;] = path_to_image(source)
    &lt;span class=&quot;r&quot;&gt;ensure&lt;/span&gt;
      &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.delete(tmp.path)   &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; tmp   &amp;amp;&amp;amp; source =~ &lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;co&quot;&gt;URI&lt;/span&gt;.regexp&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.delete(thumb.path) &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; thumb
    &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
  options[&lt;span class=&quot;sy&quot;&gt;:src&lt;/span&gt;] ||= path_to_image(source)
  options[&lt;span class=&quot;sy&quot;&gt;:alt&lt;/span&gt;] ||= &lt;span class=&quot;co&quot;&gt;File&lt;/span&gt;.basename(options[&lt;span class=&quot;sy&quot;&gt;:src&lt;/span&gt;], &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.*&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;).
                    split(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;).first.to_s.capitalize

  &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; mouseover = options.delete(&lt;span class=&quot;sy&quot;&gt;:mouseover&lt;/span&gt;)
    options[&lt;span class=&quot;sy&quot;&gt;:onmouseover&lt;/span&gt;] = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this.src='&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;image_path(mouseover)&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
    options[&lt;span class=&quot;sy&quot;&gt;:onmouseout&lt;/span&gt;]  = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this.src='&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;idl&quot;&gt;#{&lt;/span&gt;image_path(options[&lt;span class=&quot;sy&quot;&gt;:src&lt;/span&gt;])&lt;span class=&quot;idl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;

  tag(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, options)
&lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Tue, 08 Sep 2009 06:28:17 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:219</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/9/8/219-thumbs-on-the-fly</link>
      <category>How To</category>
      <category>rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
      <category> thumbs</category>
      <category> image_tag</category>
      <category> rmagick</category>
      <category> mini_magick</category>
    </item>
    <item>
      <title>Lipsiadmin 5.0.6</title>
      <description>&lt;p&gt;
  We have updated Lipsiadmin on
  &lt;a href=&quot;http://github.com/Lipsiasoft/lipsiadmin/tree/master&quot; target=&quot;_BLANK&quot;&gt;GitHub&lt;/a&gt;
  and also on
  &lt;a href=&quot;http://rubyforge.org/projects/lipsiadmin/&quot; target=&quot;_BLANK&quot;&gt;RubyForge&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This version contains only a bug fix in views/backend/base/index&lt;/p&gt;
&lt;p&gt;For update you can simply do&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;er&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;er&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;o&lt;/span&gt; &lt;span class=&quot;er&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;m&lt;/span&gt; &lt;span class=&quot;er&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;e&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Wed, 02 Sep 2009 08:45:23 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:213</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/9/2/213-lipsiadmin-5-0-6</link>
      <category>News</category>
      <category>rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
    </item>
    <item>
      <title>Lipsiadmin 5.0.5</title>
      <description>&lt;p&gt;
  We have updated Lipsiadmin on
  &lt;a href=&quot;http://github.com/Lipsiasoft/lipsiadmin/tree/master&quot; target=&quot;_BLANK&quot;&gt;GitHub&lt;/a&gt;
  and also on
  &lt;a href=&quot;http://rubyforge.org/projects/lipsiadmin/&quot; target=&quot;_BLANK&quot;&gt;RubyForge&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This version contains only few bug fixes&lt;/p&gt;
&lt;p&gt;For update you can simply do&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;er&quot;&gt;$&lt;/span&gt; &lt;span class=&quot;er&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;o&lt;/span&gt; &lt;span class=&quot;er&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;m&lt;/span&gt; &lt;span class=&quot;er&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;er&quot;&gt;e&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-8896397-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</description>
      <pubDate>Tue, 01 Sep 2009 11:35:42 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:190</guid>
      <author>d.dagostino@lipsiasoft.com (Davide D'Agostino)</author>
      <link>http://lipsiadmin.com/post/2009/9/1/190-lipsiadmin-5-0-5</link>
      <category>News</category>
      <category>rails</category>
      <category> ruby</category>
      <category> extjs</category>
      <category> lipsiadmin</category>
    </item>
  </channel>
</rss>
