<?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>El Blog del Antonio &#187; Tools</title>
	<atom:link href="http://www.ramirezcobos.com/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ramirezcobos.com</link>
	<description>Programming Web with PHP, CSS, Javascript and ∞</description>
	<lastBuildDate>Wed, 28 Dec 2011 18:26:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</title>
		<link>http://www.ramirezcobos.com/2011/12/28/free-php-html-css-javascript-editor-ide-codelobster-php-edition/</link>
		<comments>http://www.ramirezcobos.com/2011/12/28/free-php-html-css-javascript-editor-ide-codelobster-php-edition/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 18:18:55 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[On The Web]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=1005</guid>
		<description><![CDATA[Introduction
I do not normally post anything related to IDE&#8217;s but I thought this article was worth as it supports Yii   as one of the frameworks of the IDE. Thought this could be a good IDE for those Window Yii&#8217;ers out there.
Codelobster
For valuable work on creation of sites you need a good  [...]]]></description>
			<content:encoded><![CDATA[<h3><a href="http://www.ramirezcobos.com/2011/12/28/free-php-html-css-javascript-editor-ide-codelobster-php-edition/clphped/" rel="attachment wp-att-1016"><img class="alignright size-medium wp-image-1016" title="clphped" src="http://www.ramirezcobos.com/wp-content/uploads/2011/12/clphped-300x216.gif" alt="" width="300" height="216" /></a>Introduction</h3>
<p style="text-align: justify;">I do not normally post anything related to IDE&#8217;s but I thought this article was worth as it supports Yii <img src='http://www.ramirezcobos.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  as one of the frameworks of the IDE. Thought this could be a good IDE for those Window Yii&#8217;ers out there.</p>
<h3>Codelobster</h3>
<p align="left">For valuable work on creation of sites you need a good comfortable editor necessarily. There are many requiring paid products for this purpose, but we would like to select free of charge very functional and at the same time of simple in the use editor - <strong><a href="http://www.codelobster.com/">Codelobster PHP Edition</a></strong>.</p>
<p align="left">Let us consider some important possibilities and advantages of this program:</p>
<ul>
<li>All <strong>code highlights</strong> depending on a type, the also mixed code is thus supported, so the area of HTML will be highlighted as HTML, PHP as PHP, and Javascript as Javascript in a the same file. Thre is possibility of choice from color schemes, including popular IDEs.</li>
<li>Powerful <strong>autocompletion for HTML, PHP, CSS and Javascript</strong>, including HTML5 and CSS3. For PHP the structure of project is fully recognized, and the complete list of methods falls out in the proper places.</li>
<li><strong>HTML/CSS</strong> inspector on the type of Firebug, which allows easily to correlate the selected elements of page with a code and proper style.</li>
<li><strong>Context help</strong> on all supported languages. By pressing F1 key the page with detailed description for current tag, attribute or function will be opened.</li>
<li><strong>PHP debugger</strong>. PHP debugger allows to execute PHP scripts incrementally, watching the values of all variables in every line.</li>
<li><strong>SQL manager</strong> allows to produce all necessary actions with a database &#8211; to add, delete, edit a structure and records in tables, to export data, execute SQL queries. Highlighting and autocompletion works for SQL files also.</li>
<li><strong>Support of FTP</strong> allows to work straight with a remote server and to do all necessary changes with files;</li>
<li><strong>The portable option</strong> allows to use editor without the preliminary installation.</li>
<li>Other useful utilities: pair highlighting, possibility of blocks selection, collapsing, tooltips, navigation on descriptions of functions and included files at withholding of the key of CTRL, viewing of structure of files and project, preview in a browser, book-marks, and all other standard possibilities for work with a code.</li>
</ul>
<h4>Also there are special plugins for work with</h4>
<ul>
<li>CMS: <strong>Drupal, Joomla</strong></li>
<li>PHP frameworks: <strong>CakePHP, CodeIgniter, Symfony, Yii</strong></li>
<li>JavaScript libraly: <strong>JQuery</strong></li>
<li><strong>WordPress</strong> blogging engine</li>
<li><strong>Smarty</strong> template engine</li>
</ul>
<h3>How to work with Yii and CodeLobster</h3>
<iframe src="http://www.youtube.com/embed/NvL1CetvsNk?version=3&amp;modestbranding=1&amp;theme=light&amp;wmode=transparent" width="560" height="340" title="CodeLobster and Yii" style="background-color:#000;display:block;margin-bottom:0;max-width:100%;" frameborder="0" allowfullscreen></iframe><p style="font-size:11px;margin-top:0;"><a href="http://www.youtube.com/watch?v=NvL1CetvsNk" target="_blank" title="Watch on YouTube">Watch this video on YouTube</a>.</p>
<p><center><br />
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20Free%20PHP%2C%20HTML%2C%20CSS%2C%20JavaScript%20editor%20%28IDE%29%20-%20Codelobster%20PHP%20Edition%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2011%2F12%2F28%2Ffree-php-html-css-javascript-editor-ide-codelobster-php-edition%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2011/12/28/free-php-html-css-javascript-editor-ide-codelobster-php-edition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Yiianswers, a new site for yii lovers</title>
		<link>http://www.ramirezcobos.com/2011/09/13/yiianswers-a-new-site-for-yii-lovers/</link>
		<comments>http://www.ramirezcobos.com/2011/09/13/yiianswers-a-new-site-for-yii-lovers/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 20:56:55 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[On The Web]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=938</guid>
		<description><![CDATA[ I would like to introduce a new site that a good friend of mine and work colleague Maurizio Domba (mdomba) and I have setup in order to solve an issue that actually occurs at the Yii forum and help the Yii community with what we think could be a great tool for their learning or development  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ramirezcobos.com/2011/09/13/yiianswers-a-new-site-for-yii-lovers/yiia-twitter-logo/" rel="attachment wp-att-939"><img src="http://www.ramirezcobos.com/wp-content/uploads/2011/09/yiia-twitter-logo.png" alt="" title="yiia-twitter-logo" width="173" height="157" class="alignright size-full wp-image-939" /></a> I would like to introduce a new site that a good friend of mine and work colleague Maurizio Domba (<a href="http://www.yiiframework.com/forum/index.php?/user/2650-mdomba/">mdomba</a>) and I have setup in order to solve an issue that actually occurs at the <a href="http://www.yiiframework.com/forum/" title="Yii Forum">Yii forum</a> and help the Yii community with what we think could be a great tool for their learning or development processes: <a href="http://yiianswers.com">Yiianswers.com</a></p>
<p>Don&#8217;t get us wrong, the forum is amazing, highly addictive (you can check our profiles -<a href="http://www.yiiframework.com/forum/index.php?/user/2650-mdomba/" title="mdomba">mdomba</a> an <a href="http://www.yiiframework.com/forum/index.php?/user/7106-antonio-ramirez/" title="tonydspaniard">tonydspaniard</a> to find out how we love that forum) and very useful thanks to the support of a lot of good programmers that freely give aways their time to help others get the right answers, in order to push <a href="http://www.yiiframework.com">Yii</a> to the level where it supposed to be in terms of PHP community acceptance. </p>
<p>Nevertheless, one of the things that we face as the forum grows is that the same questions are repeated again and again, and we believe that this is not because users do not know how to search for a solution but for the structure and functionality of a forum itself. We always thought that could be great to have a site to keep questions and its solutions in a categorized tree where people could easily browse, search, and/or find what they are looking for, and this is why <a href="http://yiianswers.com">Yiianswers.com</a> is here.</p>
<p><a href="http://yiianswers.com">Yiianswers.com</a> is an instant Questions and Answers site, so popular nowadays. We really hope that will help you out and will easy the task of finding the right answers to your <a href="http://www.yiiframework.com">Yii</a> questions.</p>
<p><center><br />
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
</center></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20Yiianswers%2C%20a%20new%20site%20for%20yii%20lovers%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2011%2F09%2F13%2Fyiianswers-a-new-site-for-yii-lovers%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2011/09/13/yiianswers-a-new-site-for-yii-lovers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A sidebar marker trigger with EGMap 2.0</title>
		<link>http://www.ramirezcobos.com/2011/02/11/a-sidebar-marker-trigger-with-egmap-2-0/</link>
		<comments>http://www.ramirezcobos.com/2011/02/11/a-sidebar-marker-trigger-with-egmap-2-0/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 10:08:29 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[EGMap]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=806</guid>
		<description><![CDATA[
Introduction
This is another article from a feature requested by a EGMap Yii Extension User. He proposed me when the following will be incorporated to the library: http://gmaps-samples-v3.googlecode.com/svn/trunk/sidebar/random-markers.html.
I am going to demonstrate that the extension is already  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ramirezcobos.com/2011/02/11/a-sidebar-marker-trigger-with-egmap-2-0/captura-de-pantalla-2011-02-11-a-las-10-59-28/" rel="attachment wp-att-807"><img src="http://www.ramirezcobos.com/wp-content/uploads/2011/02/Captura-de-pantalla-2011-02-11-a-las-10.59.28-300x244.png" alt="" title="Sidebar marker event trigger" width="300" height="244" class="alignright size-medium wp-image-807" /></a><br />
<h3>Introduction</h3>
<p>This is another article from a feature requested by a EGMap Yii Extension User. He proposed me when the following will be incorporated to the library: <a href="http://gmaps-samples-v3.googlecode.com/svn/trunk/sidebar/random-markers.html">http://gmaps-samples-v3.googlecode.com/svn/trunk/sidebar/random-markers.html</a>.</p>
<p>I am going to demonstrate that the extension is already capable of creating that without the need of more &#8216;library tweaking&#8217;. </p>
<h3>HTML and Styling</h3>
<p>First of all we are going to write the CSS and the HTML that will &#8216;mimic&#8217; the example provided in the previous link. As you are going to see, there is also a JavaScript helper function that will handle the creation of LI elements (as in the example).</p>
<pre class="brush: xml; title: ; notranslate">
&lt;style&gt;
#sideContainer {
    list-style-type: none;
    padding: 0;
    margin: 0 10px 0 0;
    float: left;
    border: 1px solid #676767;
    background-color: #eee;
    overflow: auto;
  }
  #sideContainer li {
    font-size: 0.9em;
    border-bottom: 1px solid #aaa;
    padding: 5px;
  }
  #mapContainer {
    float: left;
    width: 500px;
    height: 400px;
  }
 &lt;/style&gt;
&lt;/head&gt;
&lt;script&gt;
// global marker counter
var n = 1;
function generateListElement( marker ){
    var ul = document.getElementById('sideContainer');
    var li = document.createElement('li');
    var aSel = document.createElement('a');
    aSel.href = 'javascript:void(0);';
    aSel.innerHTML = 'Open Marker #' + n++;
    aSel.onclick = function(){ google.maps.event.trigger(marker, 'click')};
    li.appendChild(aSel);
    ul.appendChild(li);
}
&lt;/script&gt;
&lt;body&gt;
&lt;!-- the side menu container --&gt;
&lt;ul id=&quot;sideContainer&quot; style&gt;&lt;/ul&gt;
&lt;!-- we are going to render the map here --&gt;
&lt;div id=&quot;mapContainer&quot;&gt;&lt;/div&gt;
</pre>
<h3>Creating the Map</h3>
<p>For the sake of this example, we are going to create just one EGMapInfoWindow object and two markers. The most important thing is to demonstrate how to use callbackTriggers with EGMap 2.0. As you will now see, it is pretty easy to do.</p>
<pre class="brush: php; title: ; notranslate">
// array holding a reference to all the markers
// that will be rendered to the Map
$markers = array();
$gMap = new EGMap();
$gMap-&gt;zoom = 10;
$gMap-&gt;setCenter('39.721089311812094', '2.91165944519042');
// Create GMapInfoWindow
$info_window_b = new EGMapInfoWindow('Hey! I am a marker with label!');
// Create 1st marker
$marker = new EGMapMarker(39.721089311812094, 2.91165944519042, array('title' =&gt; 'Marker With Label'));
// attach info window
$marker-&gt;addHtmlInfoWindow($info_window_b);
// add to map
$gMap-&gt;addMarker($marker);
// add to array
$markers[] = $marker;
// repeat process with second
$marker = new EGMapMarker(39.721089311812094, 2.81165944519042, array('title' =&gt; 'Marker With Label'));
$marker-&gt;addHtmlInfoWindow($info_window_b);
$gMap-&gt;addMarker($marker);
$markers[] = $marker;
// tell the map we want to render it
// to a specific layer
$gMap-&gt;appendMapTo('#mapContainer');
// initialize the afterInit array that
// will hold after map initialization
// script code
$afterInit = array();
//
// loop through markers and
// call global function to generate
// the element that will hold the
// callback trigger event
foreach($markers as $marker){
	$afterInit[] = 'generateListElement('.$marker-&gt;getJsName().');'.PHP_EOL;
}
// now render map and pass the afterInit code
$gMap-&gt;renderMap($afterInit);
</pre>
<h3>Final Words</h3>
<p>The above code is very simplistic, if we were to render lots of markers to the map, a better approach would be to make that on a loop and even more, create a couple of functions to simplify the creation of the markers.</p>
<p>Hope this example helps you guys to better understand the flexibility of this extension. Thanks all for using it. </p>
<p><center><br />
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
</center></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20A%20sidebar%20marker%20trigger%20with%20EGMap%202.0%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2011%2F02%2F11%2Fa-sidebar-marker-trigger-with-egmap-2-0%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2011/02/11/a-sidebar-marker-trigger-with-egmap-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Reverse Geolocator Tool with EGMap 2.0 Extension</title>
		<link>http://www.ramirezcobos.com/2011/02/05/a-reverse-geolocator-tool-with-egmap-2-0-extension/</link>
		<comments>http://www.ramirezcobos.com/2011/02/05/a-reverse-geolocator-tool-with-egmap-2-0-extension/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 17:12:04 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[EGMap]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=797</guid>
		<description><![CDATA[I have been requested to create an article about a reverse geolocator tool, that is a tool to find out the latitude and longitude of a location, to include on our CMS, and here it is.
Styling, Javascript and HTML
First of all, we are going to write the HTML that will work with this example, it  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-800" href="http://www.ramirezcobos.com/2011/02/05/a-reverse-geolocator-tool-with-egmap-2-0-extension/reverse-geolocator-egmap-yii/"><img class="alignright size-medium wp-image-800" title="Reverse-geolocator-EGMap-Yii" src="http://www.ramirezcobos.com/wp-content/uploads/2011/02/Reverse-geolocator-EGMap-Yii-300x280.png" alt="" width="300" height="280" /></a>I have been requested to create an article about a reverse geolocator tool, that is a tool to find out the latitude and longitude of a location, to include on our CMS, and here it is.</p>
<h3>Styling, Javascript and HTML</h3>
<p>First of all, we are going to write the HTML that will work with this example, it won&#8217;t styled as the example picture displayed, which is the tool I created for a project I am working now, but don&#8217;t you worry as this article will provide you with the scripts and routines to create your own.</p>
<p>Write the following style on the HEAD section of your HTML page:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;style&gt;
  div#map {
    position: relative;
  }
  div#crosshair {
    position: absolute;
/*
     the top will be half of the width of the map
     less 50% of its size more or less
     to center the image correctly on the map
*/
    top: 192px;
    height: 19px;
    width: 19px;
    left: 50%;
    margin-left: -8px;
    display: block;
/* we are going to borrow a crosshair gif from google */
    background: url(http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/crosshair.gif);
    background-position: center center;
    background-repeat: no-repeat;
}
&lt;/style&gt;
</pre>
<p>Now, some Javascript functions that will allow us to get the information from the map</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
  //
  // function to get the latitude and longitude
  // and place them on the test fields
  function setLatLngToClass(){
	if(document.getElementById('test_latitude'))
	 	document.getElementById('test_latitude').value = map.getCenter().lat();
	if(document.getElementById('test_longitude'))
		document.getElementById('test_longitude').value = map.getCenter().lng();
  }
  //
  // function to get Centered Latitude and Longitude points
  function getCenterLatLngText() {
    return '(' + map.getCenter().lat() +', '+ map.getCenter().lng() +')';
  }
  //
  // function to call when the center of the map
  // has changed. Center information will be
  // collected and displayed on the document
  // elements
  function centerChanged() {
    centerChangedLast = new Date();
    var latlng = getCenterLatLngText();
    document.getElementById('latlng').innerHTML = latlng;
    document.getElementById('formatedAddress').innerHTML = '';
    currentReverseGeocodeResponse = null;
  }
  //
  // Collects reverse center location
  function reverseGeocode() {
    reverseGeocodedLast = new Date();
    geocoder.geocode({latLng:map.getCenter()},reverseGeocodeResult);
  }
  //
  // Displays collected reverse geocoded results
  // and displays them on document elements
  function reverseGeocodeResult(results, status) {
    currentReverseGeocodeResponse = results;
    if(status == 'OK') {
      if(results.length == 0) {
        document.getElementById('formatedAddress').innerHTML = 'None';
      } else {
        document.getElementById('formatedAddress').innerHTML = results[0].formatted_address;
      }
    } else {
      document.getElementById('formatedAddress').innerHTML = 'Error';
    }
  }
  //
  // geocodes the address inserted
  function geocode() {
    var address = document.getElementById(&quot;address&quot;).value;
    geocoder.geocode({
      'address': address,
      'partialmatch': true}, geocodeResult);
  }
  function geocodeResult(results, status) {
    if (status == 'OK' &amp;&amp; results.length &gt; 0) {
      map.fitBounds(results[0].geometry.viewport);
    } else {
      alert(&quot;Geocode was not successful for the following reason: &quot; + status);
    }
  }
 //
 // adds marker to the center of the map
  function addMarkerAtCenter() {
    var marker = new google.maps.Marker({
        position: map.getCenter(),
        map: map
    });
    var text = 'Lat/Lng: ' + getCenterLatLngText();
    if(currentReverseGeocodeResponse) {
      var addr = '';
      if(currentReverseGeocodeResponse.size == 0) {
        addr = 'None';
      } else {
        addr = currentReverseGeocodeResponse[0].formatted_address;
      }
      text = text + '&lt;br&gt;' + 'address: &lt;br&gt;' + addr;
    }
    var infowindow = new google.maps.InfoWindow({ content: text });
    google.maps.event.addListener(marker, 'click', function() {
      infowindow.open(map,marker);
    });
  }
&lt;/script&gt;
</pre>
<p>Our HTML on this example will be the following one:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;body style=&quot;background:white&quot;&gt;
&lt;div class=&quot;form&quot;&gt;
Find by address:
 &lt;input type=&quot;text&quot; id=&quot;address&quot; style=&quot;width:300px&quot;/&gt;
 &lt;button type=&quot;button&quot; class=&quot;small&quot;onclick=&quot;geocode()&quot;&gt;Go to Address&lt;/button&gt;
  &lt;ul&gt;
     &lt;li&gt;Lat/Lng:&amp;nbsp;&lt;span id=&quot;latlng&quot;&gt;&lt;/span&gt;&lt;/li&gt;
     &lt;li&gt;Address:&amp;nbsp;&lt;span id=&quot;formatedAddress&quot;&gt;&lt;/span&gt;&lt;/li&gt;
     &lt;li&gt;Zoom Level:&amp;nbsp;&lt;span id=&quot;zoom_level&quot;&gt;&lt;?php echo $zoom;?&gt;&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;map&quot;&gt;
    &lt;div id=&quot;map_canvas&quot; style=&quot;width:100%; height:400px&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;crosshair&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;overflow:hidden;width:100%;text-align:right&quot;&gt;
&lt;button type=&quot;button&quot; class=&quot;small&quot; onclick=&quot;setLatLngToClass()&quot;&gt;Set Latitude &amp; Longitude&lt;/button&gt;
&lt;button type=&quot;button&quot; class=&quot;small&quot; onclick=&quot;addMarkerAtCenter()&quot;&gt;Add Marker at Center&lt;/button&gt;
&lt;/div&gt;
&lt;hr&gt;
Latitude: &lt;input id=&quot;test_latitude&quot; value=&quot;&quot;/&gt; Longitude: &lt;input id=&quot;test_longitude&quot; value=&quot;&quot;/&gt;
&lt;/hr&gt;
&lt;/body&gt;
</pre>
<h3>Using EGMap 2.0 Extension</h3>
<p>Finally, we are going to use EGMap 2.0 extension to automate the rest of the tasks to render our map.</p>
<pre class="brush: php; title: ; notranslate">
Yii::import('ext.gmaps.*');
// center the map
// wherever you want
$latitude = 39.72098197183251;
$longitude = 2.9115524999999964;
$zoom = 8;
$gMap = new EGMap();
$gMap-&gt;setJsName('map');
$gMap-&gt;width = '100%';
$gMap-&gt;height = '400';
$gMap-&gt;setCenter($latitude, $longitude);
$gMap-&gt;zoom = 8;
$gMap-&gt;addGlobalVariable('geocoder');
$gMap-&gt;addGlobalVariable('centerChangedLast');
$gMap-&gt;addGlobalVariable('reverseGeocodedLast');
$gMap-&gt;addGlobalVariable('currentReversGeocodeResponse');
$gMap-&gt;addEvent(
     new EGMapEvent(
             'zoom_changed',
             'document.getElementById(&quot;zoom_level&quot;).innerHTML = map.getZoom();'));
$gMap-&gt;addEvent(new EGMapEvent('center_changed','centerChanged',false));
$gEvent = new EGMapEvent('dblclick','map.setZoom(map.getZoom() +1)');
$gMap-&gt;appendMapTo('#map_canvas');
$gMap-&gt;renderMap(array(
    'geocoder = new google.maps.Geocoder();',
    $gEvent-&gt;getDomEventJs('crosshair'),
    'reverseGeocodedLast= new Date();',
    'centerChagedLast = new Date();',
    'setInterval(function(){
        if((new Date()).getSeconds() - centerChangedLast.getSeconds() &gt; 1) {
        if(reverseGeocodedLast.getTime() &lt; centerChangedLast.getTime())
          reverseGeocode();
      }
    },1000);',
    'centerChanged();'
));
</pre>
<h3>Important</h3>
<p>If you are going to run this example, please be aware that in order to display it properly in a controller, all of the above have to be the content of a layout, otherwise, if you are using renderPartial (that you can), make sure you force to true the parameter &#8216;processOutput&#8217; of the mentioned function (ie $this-&gt;renderPartial(&#8216;view&#8217;,null,false,true) )</p>
<p><center><br />
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
</center></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20A%20Reverse%20Geolocator%20Tool%20with%20EGMap%202.0%20Extension%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2011%2F02%2F05%2Fa-reverse-geolocator-tool-with-egmap-2-0-extension%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2011/02/05/a-reverse-geolocator-tool-with-egmap-2-0-extension/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EFeed Universal RSS Feed Writer For Yii</title>
		<link>http://www.ramirezcobos.com/2011/01/24/efeed-universal-rss-feed-writer-for-yii/</link>
		<comments>http://www.ramirezcobos.com/2011/01/24/efeed-universal-rss-feed-writer-for-yii/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 19:03:24 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Portofolio]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=769</guid>
		<description><![CDATA[
Introduction
Required for one of my projects, I decided to develop my own Yii extension to create RSS Feeds. I knew there is already one but I wanted something easier to use than that. This is why I came up with EFeed Extension. This extension supports RSS 1.0, RSS 2.0, and ATOM 1.0 standards.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ramirezcobos.com/2010/10/28/how-to-use-jqueryslidemenu-with-yii%e2%80%99s-cmenu/yii/" rel="attachment wp-att-612"><img src="http://www.ramirezcobos.com/wp-content/uploads/2010/10/Yii.png" alt="Yii Framework" title="Yii Framework" width="160" height="160" class="alignright size-full wp-image-612" /></a><br />
<h3>Introduction</h3>
<p>Required for one of my projects, I decided to develop my own Yii extension to create RSS Feeds. I knew there is already one but I wanted something easier to use than that. This is why I came up with <a href="http://www.yiiframework.com/extension/efeed/">EFeed Extension</a>. This extension supports RSS 1.0, RSS 2.0, and ATOM 1.0 standards. </p>
<h3>How to Use</h3>
<p>I assume that you have downloaded the extension and place it on your protected/extensions folder. </p>
<p><strong>RSS 1.0 Example</strong></p>
<pre class="brush: php; title: ; notranslate">
Yii::import('ext.feed.*');
// specify feed type
$feed = new EFeed(EFeed::RSS1);
$feed-&gt;title = 'Testing the RSS 1 EFeed class';
$feed-&gt;link = 'http://www.ramirezcobos.com';
$feed-&gt;description = 'This is test of creating a RSS 1.0 feed by Universal Feed Writer';
$feed-&gt;RSS1ChannelAbout = 'http://www.ramirezcobos.com/about';
// create our item
$item = $feed-&gt;createNewItem();
$item-&gt;title = 'The first feed';
$item-&gt;link = 'http://www.yiiframework.com';
$item-&gt;date = time();
$item-&gt;description = 'Amaz-ii-ng &lt;b&gt;Yii Framework&lt;/b&gt;';
$item-&gt;addTag('dc:subject', 'Subject Testing');
 // add it to the feed
$feed-&gt;addItem($item);
$feed-&gt;generateFeed();
</pre>
<p>As you can see in the example above, we just need to create items and add them to the feed. The example could be easily modified to add items extracted from a database and add them to the Feed in a loop.</p>
<p><strong>RSS 2.0 Example</strong></p>
<pre class="brush: php; title: ; notranslate">
Yii::import('ext.feed.*');
// RSS 2.0 is the default type
$feed = new EFeed();
$feed-&gt;title= 'Testing RSS 2.0 EFeed class';
$feed-&gt;description = 'This is test of creating a RSS 2.0 Feed';
$feed-&gt;setImage(
'Testing the EFeed class',
'http://www.ramirezcobos.com',
'http://www.yiiframework.com/forum/uploads/profile/photo-7106.jpg');
$feed-&gt;addChannelTag('language', 'en-us');
$feed-&gt;addChannelTag('pubDate', date(DATE_RSS, time()));
$item = $feed-&gt;createNewItem();
$item-&gt;title = &quot;first Feed&quot;;
$item-&gt;link = &quot;http://www.yahoo.com&quot;;
$item-&gt;date = time();
$item-&gt;description = 'This is test of adding ' .
          'CDATA Encoded description &lt;b&gt;EFeed Extension&lt;/b&gt;';
// this is just a test!!
$item-&gt;setEncloser(
      'http://www.tester.com',
     '1283629', 'audio/mpeg');
$item-&gt;addTag(
     'author',
     'thisisnot@myemail.com (Antonio Ramirez)');
$item-&gt;addTag(
     'guid',
     'http://www.ramirezcobos.com',
     array('isPermaLink'=&gt;'true'));
$feed-&gt;addItem($item);
$feed-&gt;generateFeed();
</pre>
<p>ATOM 1.0 Example</p>
<pre class="brush: php; title: ; notranslate">
Yii::import('ext.feed.*');
$feed = new EFeed(EFeed::ATOM);
// IMPORTANT : No need to add id for feed or channel.
// It will be automatically created from link.
$feed-&gt;title = 'Testing the ATOM RSS EFeed class';
$feed-&gt;link = 'http://www.ramirezcobos.com';
$feed-&gt;addChannelTag('updated', date(DATE_ATOM, time()));
$feed-&gt;addChannelTag('author', array('name'=&gt;'Antonio Ramirez Cobos'));
$item = $feed-&gt;createNewItem();
$item-&gt;title = 'The first Feed';
$item-&gt;link  = 'http://www.ramirezcobos.com';
// we can also insert well formatted date strings
$item-&gt;date ='2010/24/12';
$item-&gt;description = 'Test of CDATA Encoded description &lt;b&gt;EFeed Extension&lt;/b&gt;';
$feed-&gt;addItem($item);
$feed-&gt;generateFeed();
</pre>
<h3>Download</h3>
<p>To download the extension go to <a href="http://www.yiiframework.com/extension/efeed/">Yii&#8217;s extension repository</a>. Hope this little piece of code can help your project needs somehow.</p>
<p><center></p>
<p></center></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20EFeed%20Universal%20RSS%20Feed%20Writer%20For%20Yii%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2011%2F01%2F24%2Fefeed-universal-rss-feed-writer-for-yii%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2011/01/24/efeed-universal-rss-feed-writer-for-yii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EGMap Google Maps Extension for Yii</title>
		<link>http://www.ramirezcobos.com/2010/12/22/egmap-google-maps-extension-for-yii/</link>
		<comments>http://www.ramirezcobos.com/2010/12/22/egmap-google-maps-extension-for-yii/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 18:38:34 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<category><![CDATA[Extension]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=740</guid>
		<description><![CDATA[
Introduction
I had to develop a Google maps extension for my current personal project and I did some research in order not to re-invent the wheel.
The best of them all was a Symphony plugin developed by Fabrice Bernhard. I didn&#8217;t want to create a wrapper so I decided to modify its code -in some  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-612" href="http://www.ramirezcobos.com/2010/10/28/how-to-use-jqueryslidemenu-with-yii%e2%80%99s-cmenu/yii/"><img class="alignright size-full wp-image-612" title="Yii Framework" src="http://www.ramirezcobos.com/wp-content/uploads/2010/10/Yii.png" alt="Yii Framework" width="160" height="160" /></a></p>
<h3>Introduction</h3>
<p>I had to develop a Google maps extension for my current personal project and I did some research in order not to re-invent the wheel.</p>
<p>The best of them all was a <a title="sfEasyGMailPlugin" href="http://www.symfony-project.org/plugins/sfEasyGMapPlugin">Symphony plugin developed by Fabrice Bernhard</a>. I didn&#8217;t want to create a wrapper so I decided to modify its code -in some cases rewriting the whole class, in order to create a full Extension built with Yii.</p>
<p>The features of this extension are very large to explain, therefore I will concentrate my next posts to fully explain by example the wonders of this extension.</p>
<h3>Requirements</h3>
<p>Developed with latest stable version of Yii (1.5)</p>
<h3>Usage</h3>
<p>Unzip its contents and place the <em>gmaps</em> folder into your protected/extensions folder.</p>
<h3>A Reallly Easy Example</h3>
<p>Displaying a Marker with an Info window.</p>
<p>Note: This example was written in a <strong>view file</strong>.</p>
<pre class="brush: php; title: ; notranslate">
    // import the library
    Yii::import('ext.gmaps.*');
    $gMap = new EGMap();
    $gMap-&gt;setZoom(13);
    $gMap-&gt;setCenter(39.721089311812094, 2.91165944519042);
    // Create GMapInfoWindow
    $info_window = new EGMapInfoWindow('&lt;div&gt;I was living here as a kid!&lt;/div&gt;');
    // Create marker
    $marker = new EGMapMarker(39.721089311812094, 2.91165944519042, array('title' =&gt; '&quot;My Town&quot;'));
    $marker-&gt;addHtmlInfoWindow($info_window);
    $gMap-&gt;addMarker($marker);
    $gMap-&gt;renderMap();
</pre>
<p><strong>Result</strong><br />
<a href="http://www.ramirezcobos.com/wp-content/uploads/2010/12/Captura-de-pantalla-2010-12-22-a-las-19.26.10.png"><img class="alignleft size-medium wp-image-741" title="EGMap Example 1" src="http://www.ramirezcobos.com/wp-content/uploads/2010/12/Captura-de-pantalla-2010-12-22-a-las-19.26.10-300x297.png" alt="" width="300" height="297" /></a></p>
<div style="clear:both">&nbsp;</div>
<h3>Resources</h3>
<p><a href="http://www.yiiframework.com/extension/egmap/">Download the Extension</a><br />
<a href="http://www.yiiframework.com/forum/index.php?/topic/14445-egmap-google-maps-extension">Bug Reports &amp; Positive Feedback</a></p>
<p><center><br />
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
</center></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20EGMap%20Google%20Maps%20Extension%20for%20Yii%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2010%2F12%2F22%2Fegmap-google-maps-extension-for-yii%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2010/12/22/egmap-google-maps-extension-for-yii/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>jqPrettyPhoto Extension for Yii</title>
		<link>http://www.ramirezcobos.com/2010/10/21/jqprettyphoto-extension-for-yii/</link>
		<comments>http://www.ramirezcobos.com/2010/10/21/jqprettyphoto-extension-for-yii/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 16:37:52 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Yii]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=563</guid>
		<description><![CDATA[I am currently developing a site for a real estate business and it is all built with Yii Framework -I am alone here so I need the best allies for this job   . During this development I come up with the creation of some cool extensions that I am, of couse, going to share with all of you.
Introducing  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-562" href="http://www.ramirezcobos.com/2010/10/21/jqprettyphoto-extension-for-yii/captura-de-pantalla-2010-10-21-a-las-18-37-26/"><img class="alignright size-medium wp-image-562" title="PrettyPhoto" src="http://www.ramirezcobos.com/wp-content/uploads/2010/10/Captura-de-pantalla-2010-10-21-a-las-18.37.26-300x260.png" alt="" width="300" height="260" /></a>I am currently developing a site for a real estate business and it is all built with Yii Framework -I am alone here so I need the best allies for this job <img src='http://www.ramirezcobos.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . During this development I come up with the creation of some cool extensions that I am, of couse, going to share with all of you.</p>
<h2>Introducing jqPrettyPhoto</h2>
<blockquote><p>This extension is making use of the grrrreat jQuery plugin called <a href="http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/" target="_blank">PrettyPhoto</a>. Here is its description in detail:</p>
<p>rettyPhoto is a jQuery lightbox clone. Not only does it support  images, it also support for videos, flash, YouTube, iframes. It’s a full  blown media lightbox.</p>
<p>It is very easy to setup, yet very flexible if you want to customize  it a bit. Plus the script is compatible in every major browser, even  IE6.</p>
<p>It also comes with useful APIs so prettyPhoto can be launched from nearly anywhere (yes, that includes Flash)!</p></blockquote>
<h2>How to Install</h2>
<p>Unzip the contents of the downloaded package below and copy its contents into your application&#8217;s <strong>protected/extensions</strong> folder.</p>
<p>How to Use</p>
<p>Once we have move the contents of the zipped file into the extensions folder we are ready to go. Use it at your own will into your views like this:</p>
<pre class="brush: php; title: ; notranslate">&lt;/p&gt;
Yii::import('ext.jqPrettyPhoto');
jqPrettyPhoto::addPretty('.gallery a',jqPrettyPhoto::PRETTY_GALLERY,jqPrettyPhoto::THEME_FACEBOOK);
</pre>
<p>Wow! That was easy! Please allow me to explain the addPretty function. It comes with three parameters:</p>
<p>1) <strong>element/s selector</strong>: the JQUERY SELECTOR to the links you want to set pretty photo to. In the example above I had the following on the view&#8217;s HTML:</p>
<pre class="brush: xml; title: ; notranslate">&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gallery&quot;&gt;&lt;br /&gt;
 &lt;a href=&quot;URL_TO_IMAGE_TO_OPEN&quot;&gt;&lt;img src=&quot;URL_TO_IMAGE_TO_SHOW&quot;/&gt;&lt;/a&gt;&lt;br /&gt;
</pre>
<p>2) The second parameter is of the value jqPrettyPhoto::PRETTY_GALLERY or jqPrettyPhoto::PRETTY_SINGLE, which tells the extension whether the selector will be a list of a gallery images or just a single file.</p>
<p>3) The third one is what theme to use -please refer to jqPrettyPhoto.php&#8217;s code to see more options on this one.</p>
<h2>Download</h2>
<p>** If you have problems please use <a href="http://www.ramirezcobos.com/wp-content/plugins/downloads-manager/upload/jqPrettyPhoto.zip">this link</a>.</p>
<p style="text-align: center;"><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://www.ramirezcobos.com/wp-content/plugins/downloads-manager/img/icons/default.gif" alt="http://www.ramirezcobos.com/wp-content/plugins/downloads-manager/img/icons/default.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://www.ramirezcobos.com/?file_id=13">jqPrettyPhoto Yii Extension</a> <small>(72.29KB)</small><br />
      <b>added:</b> 21/10/2010 <br />
      <b>clicks:</b> 1267 <br />
    </td>
  </tr>
</table></p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20jqPrettyPhoto%20Extension%20for%20Yii%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2010%2F10%2F21%2Fjqprettyphoto-extension-for-yii%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2010/10/21/jqprettyphoto-extension-for-yii/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Invoice Bubble -Create Professional Invoices for Free</title>
		<link>http://www.ramirezcobos.com/2010/09/21/invoice-bubble-create-professional-invoices-for-free/</link>
		<comments>http://www.ramirezcobos.com/2010/09/21/invoice-bubble-create-professional-invoices-for-free/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 06:37:13 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[On The Web]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=510</guid>
		<description><![CDATA[I have lately found a very interesting service for those who work as a freelance to create really cool invoices; it is called Invoice Bubble.  With this service, which is totally free (it inserts some ads that can be removed by paying a very low monthly fee $5 USD), you can create your own  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-511" href="http://www.ramirezcobos.com/2010/09/21/invoice-bubble-create-professional-invoices-for-free/create-professional-invoices-for-free-invoice-bubble/"><img class="alignright size-medium wp-image-511" title="create-professional-invoices-for-free-invoice-bubble" src="http://www.ramirezcobos.com/wp-content/uploads/2010/09/create-professional-invoices-for-free-invoice-bubble-300x159.jpg" alt="" width="300" height="159" /></a>I have lately found a very interesting service for those who work as a freelance to create really cool invoices; it is called<a href="http://www.invoicebubble.com" target="_blank"> Invoice Bubble</a>.  With this service, which is totally free (it inserts some ads that can be removed by paying a very low monthly fee $5 USD), you can create your own invoices, send them to your clients and get paid via Paypal.</p>
<p>It is quite good and has an excellent design; also, you can create recurring invoices and keep track of the payments from the control panel.</p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20Invoice%20Bubble%20-Create%20Professional%20Invoices%20for%20Free%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2010%2F09%2F21%2Finvoice-bubble-create-professional-invoices-for-free%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2010/09/21/invoice-bubble-create-professional-invoices-for-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Less Framework 2</title>
		<link>http://www.ramirezcobos.com/2010/09/12/less-framework-2/</link>
		<comments>http://www.ramirezcobos.com/2010/09/12/less-framework-2/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 10:17:03 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[On The Web]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=502</guid>
		<description><![CDATA[All of us know how hard is to get a proper CSS layout for our pages. Thanks to 960 grid system we developers were able to solve some of the issues that we face when we design for different browsers. Now, new devices coming aboard such as Android, iPhones, Blackberry&#8217;s and their browsers and the  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-503" href="http://www.ramirezcobos.com/2010/09/12/less-framework-2/captura-de-pantalla-2010-09-12-a-las-12-00-32/"><img class="alignright size-medium wp-image-503" title="Less Framework 2" src="http://www.ramirezcobos.com/wp-content/uploads/2010/09/Captura-de-pantalla-2010-09-12-a-las-12.00.32-300x269.png" alt="" width="300" height="269" /></a>All of us know how hard is to get a proper CSS layout for our pages. Thanks to <a href="http://960.gs/" target="_blank">960 grid system</a> we developers were able to solve some of the issues that we face when we design for different browsers. Now, new devices coming aboard such as Android, iPhones, Blackberry&#8217;s and their browsers and the nightmare continues. Nevertheless, nice people like those of 960 grid system give away their approaches and solutions in order to make our life&#8217;s easier. <a href="http://lessframework.com/" target="_blank">Less Framework 2</a> comes to help us:</p>
<h4>A <abbr>CSS</abbr> framework for cross-device layouts</h4>
<p>Everyone writes <abbr>CSS</abbr> differently. Less Framework takes this  into account by having a minimal set of features, and does away with  things like predefined classes.</p>
<h4>No more 960 px</h4>
<p>Less Framework uses inline <abbr>CSS3</abbr> media-queries to switch between three layouts:</p>
<ul>
<li>a two-column layout at 320 px, for smartphones</li>
<li>a five-column layout at 768 px, for iPads and netbooks</li>
<li>and an eight-column layout at 1280 px, for desktops and laptops.</li>
</ul>
<h4>No hacks, unless you want them</h4>
<p>Less Framework works beautifully in Firefox, Chrome, Safari, Opera, <abbr>IE9</abbr> (hopefully), Android phones, and all iOS devices (that&#8217;s all iPhones,  iPads, and iPod Touches). It even behaves nicely in landscape mode.</p>
<p style="text-align: center;">
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p style="text-align: center;">
<a href="http://twitter.com/?status=RT%20%40%3A%20Less%20Framework%202%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2010%2F09%2F12%2Fless-framework-2%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2010/09/12/less-framework-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii Framework -Final Decision</title>
		<link>http://www.ramirezcobos.com/2010/06/19/yii-framework-final-decision/</link>
		<comments>http://www.ramirezcobos.com/2010/06/19/yii-framework-final-decision/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 18:43:51 +0000</pubDate>
		<dc:creator>Antonio Ramirez</dc:creator>
				<category><![CDATA[On The Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<guid isPermaLink="false">http://www.ramirezcobos.com/?p=481</guid>
		<description><![CDATA[I never felt comfortable with external libraries, those created by other people. Always, since my old times with Visual Basic, have created my own and until now, everything I created was good enough but&#8230; Suddenly, after I found that marvellous library called RedBean, I found my self re-programming  [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-483" href="http://www.ramirezcobos.com/2010/06/19/yii-framework-final-decision/yii_logo-300x300/"><img class="alignright size-full wp-image-483" title="Yii Framework" src="http://www.ramirezcobos.com/wp-content/uploads/2010/06/yii_logo-300x300.jpg" alt="" width="300" height="300" /></a>I never felt comfortable with external libraries, those created by other people. Always, since my old times with Visual Basic, have created my own and until now, everything I created was good enough but&#8230; Suddenly, after I found that marvellous library called <a href="http://www.redbeanphp.com" target="_blank">RedBean</a>, I found my self re-programming all my libraries and end up creating a controller and a base model class for a sort of MVC library &#8211; I will post it one of these days so you guys can look at it and find out how easy is to implement that incredible library is (thanks Gabor de Mooij!) on your libraries.</p>
<p>But, as a programmer, I started to think that, even though my own libraries speed up my development processes, I want it to be hands on a bigger and more ambitious projects -that happened long time a go but never felt impressed by any library out there. My libraries lacked on scalable development architecture and had to find for a better solution for a much bigger project I am jumping right now. I google around and found interesting offers as exposed on <a href="http://www.ramirezcobos.com/2010/01/26/php-frameworks/" target="_blank">one of my old posts</a>:</p>
<ul>
<li><a href="http://www.codeigniter.com" target="_blank">CodeIgniter</a></li>
<li><a href="http://www.yiiframework.com/">Yii</a></li>
<li><a href="http://www.cakephp.org" target="_blank">CakePHP</a></li>
<li><a href="http://framework.zend.com/home" target="_blank">Zend</a></li>
<li><a href="http://www.symfony-project.com/" target="_blank">Symfony</a></li>
<li><a href="http://www.phpdevshell.org/" target="_blank">PHPDevShell</a></li>
<li><a href="http://www.pradosoft.com/" target="_blank">Prado</a></li>
<li><a href="http://www.akelos.org/" target="_blank">Akelos</a></li>
<li><a href="http://www.akelos.org/" target="_blank">ZooP</a></li>
<li><a href="http://qphp.net/" target="_blank">QPHP</a></li>
<li><a href="http://www.ez.no/ezcomponents" target="_blank">ezComponents</a></li>
<li><a href="http://www.doophp.com/" target="_blank">DooPHP</a></li>
</ul>
<p>Actually, far too many, so I took my time to decide for one to suit all my needs. Checked around and read some good articles about Yii framework and then, telling the truth, I was very impressed with (information taken from <a href="http://programmersnotes.info/2009/02/24/yii_framework_of_my_choice/" target="_self">http://programmersnotes.info</a>:</p>
<ul>
<li>100% OO architecture. It is really good application design.</li>
<li>Authentication &amp; roles mechanism</li>
<li>Caching techniques</li>
<li>DB access, which is based on PDO</li>
<li>Active record and relational active record implementation</li>
<li>Validation – that is really, really nice. To create quite complex  register form (check if login is unique, if email is unique, email match  with confirmation, passwords match, validate integer/string values,  check empty fields and give nice error messages for each field you need  only template (view) and model with rules defined. It took me 10-15 mins  to do that!)</li>
<li>Component concept. Just to give an idea, why is it nice – you can  define getter and setter methods for properties, you can define  read-only properties for components, define and invoke events, attach  event handlers and additional features to the class without modifying  it, just by attaching additional behaviour to it</li>
<li>Also, check its graphical benchmarking against other MVC frameworks <a href="http://www.yiiframework.com/performance" target="_blank">http://www.yiiframework.com/performance</a>.</li>
</ul>
<p>Wondering whether <a href="http://www.doophp.com">DooPHP</a> (claiming is the fastest at the moment) or <a href="http://www.yiiframework.com/" target="_blank">Yii</a>, I finally decided to use the latest due that DooPHP is quite new and Yii has a huge amount of features and tweaks that, even its documentation is not the best (I just read their Definitive Guide and I think I will have to read to a couple of hundreds articles more to be &#8216;good&#8217; at it), I think at the end will become the Toolset for highly scalable projects -using its automation tool called <a href="http://www.yiiframework.com/doc/guide/topics.gii" target="_blank">Gii</a>, I did the skeleton of a project in less than 30 seconds -duh!.</p>
<p>In addition. last but not least, you can integrate <a href="http://framework.zend.com/manual/components">Zend components</a> easily and <a href="http://www.jquery.com" target="_blank">jQuery</a> is nativelly implemented -and I loooooove jQuery.</p>
<p>For the small ones I still like my own libraries though <img src='http://www.ramirezcobos.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<script type="text/javascript"><!--
google_ad_client = "pub-7060132287364604";
/* 468x60, creado 16/03/10 */
google_ad_slot = "9029910384";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<a href="http://twitter.com/?status=RT%20%40%3A%20Yii%20Framework%20-Final%20Decision%20-%20El%20Blog%20del%20Antonio%20http%3A%2F%2Fwww.ramirezcobos.com%2F2010%2F06%2F19%2Fyii-framework-final-decision%2F" class="tweet-this" ><img src="http://www.ramirezcobos.com/wp-content/plugins/simple-tweet/img/tweet.gif" title="Tweet this!" alt="Tweet this!" />Tweet this!</a>]]></content:encoded>
			<wfw:commentRss>http://www.ramirezcobos.com/2010/06/19/yii-framework-final-decision/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: www.ramirezcobos.com @ 2012-02-06 17:37:44 by W3 Total Cache -->
