<?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>Cmacias.com</title>
	<atom:link href="http://www.cmacias.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cmacias.com</link>
	<description>Otro blog más de diseño</description>
	<lastBuildDate>Sat, 06 Aug 2011 18:26:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Posts e imágenes compartidas en wordpress</title>
		<link>http://www.cmacias.com/posts-e-imagenes-compartidas-en-wordpress/</link>
		<comments>http://www.cmacias.com/posts-e-imagenes-compartidas-en-wordpress/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 18:24:34 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=479</guid>
		<description><![CDATA[A medida que voy realizando proyectos en wordpress me voy encontrando con algunos baches que lejos de replantearme el dejar este CMS, hacen que constituyan un verdadero reto el salvarlos. Imaginémonos que hacemos un catálogo (para lo que crearía un post-type nuevo de tipo &#8220;catalogo&#8221;) en el que son varios los usuarios que tienen permisos [...]]]></description>
			<content:encoded><![CDATA[<p>A medida que voy realizando proyectos en wordpress me voy encontrando con algunos baches que lejos de replantearme el dejar este CMS, hacen que constituyan un verdadero reto el salvarlos.</p>
<p>Imaginémonos que hacemos un catálogo (para lo que crearía un post-type nuevo de tipo &#8220;catalogo&#8221;) en el que son varios los usuarios que tienen permisos para poder añadir productos a este catálogo. Ya que estamos imaginándolo, imaginemos también que estos usuarios son empresas, que añaden sus productos que yo de alguna manera promociono. Nada raro, sino fuera porque los usuarios pueden ver tanto las imágenes subidas como los &#8220;productos&#8221; creados de los demás, independientemente de que no puedan editar los productos de otros, queda un poco feo además de poco ético, ya que los usuarios/empresa podrían aprovechar los recursos de los demás.</p>
<p>Para evitar esto, hay una pequeña función que añadida a nuestro functions.php evitará que los usuarios puedan ver elementos creados por si mismos como posts, productos, imágenes, etc.</p>
<pre class="php">
function query_set_only_author( $wp_query )
{
    global $current_user;
    if ( is_admin() &#038;&#038; !current_user_can('manage_options') )
    {
        $wp_query->set( 'author', $current_user->ID );
    }
}
add_action('pre_get_posts', 'query_set_only_author' );
</pre>
<p>Sencillo, verdad ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/posts-e-imagenes-compartidas-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Otro sistema de pestañas</title>
		<link>http://www.cmacias.com/otro-sistema-de-pestanas/</link>
		<comments>http://www.cmacias.com/otro-sistema-de-pestanas/#comments</comments>
		<pubDate>Sat, 28 May 2011 17:23:27 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=453</guid>
		<description><![CDATA[Hace ya algún tiempo había creado un pequeño tutorial de como crear un sistema de pestañas independiente de frameworks Js. Para una iniciación no estaba mal, aunque tenía algúnas limitaciones que impedían añadir &#8220;subpestañas&#8221; o determinados tags usados en el script, lo que a la larga lo convertía en uno de tantos scripts que pasan [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-470" title="tabs" src="http://www.cmacias.com/wp-content/uploads/2011/05/tabs.jpg" alt="" width="425" height="107" /></p>
<p>Hace ya algún tiempo había creado un pequeño tutorial de <a title="Un sencillo sistema de pestañas" href="http://www.cmacias.com/un-sencillo-sistema-de-pestanas/" target="_blank">como crear un sistema de pestañas</a> independiente de frameworks Js. Para una iniciación no estaba mal, aunque tenía algúnas limitaciones que impedían añadir &#8220;subpestañas&#8221; o determinados tags usados en el script, lo que a la larga lo convertía en uno de tantos scripts que pasan al olvido.</p>
<p>Es por ello que decidí rehacer el código. Más sencillo, más claro y obviamente más útil. Este nuevo sistema permite añadir pestañas dentro de un panel, e incluso utilizar nuevos divs para el caso de que los contenedores a usar ya lo sean.</p>
<p>Empezamos creando el contenedor que tendrá nuestro sistema de pestañas. Un simple div nos valdrá.</p>
<pre class="html">&lt;div id="panel"&gt;&lt;/div&gt;</pre>
<p>Dentro de este panel, añadiremos las pestañas. Al igual que en muchos sistemas, utilizaremos listas, aunque bien podríamos utilizar simples enlaces.</p>
<pre class="html">&lt;ul id="tabs"&gt;
  &lt;li&gt;opción 1&lt;/li&gt;
  &lt;li&gt;opción 2&lt;/li&gt;
  &lt;li&gt;opción 3&lt;/li&gt;
  &lt;li&gt;opción 4&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Bien, ahora crearemos un panel donde se ubicarán las contenidos de cada pestaña. Una buena estructura sería una capa (div) principal, y otra tantas capa (div) por cada pestaña</p>
<pre class="html">&lt;div id="paneles"&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p>Todo junto nos quedaría así</p>
<pre class="html">&lt;div id="panel"&gt;
  &lt;ul id="tabs"&gt;
    &lt;li&gt;opción 1&lt;/li&gt;
    &lt;li&gt;opción 2&lt;/li&gt;
    &lt;li&gt;opción 3&lt;/li&gt;
    &lt;li&gt;opción 4&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div id="paneles"&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
<p>Lo interesante es crear los estilos y no depender de imágenes. Estos estilos aplicarán las esquinas redondeadas de las pestañas al igual que en los sistemas windows, con excepción &#8211; como no &#8211; a los explorer, que no disponen de propiedad de &#8220;redondeo&#8221;.</p>
<pre class="css">/* tamaño y forma del panel principal */
#panel {
  position: relative;
  width:400px;
  height: 300px;
  margin: 100px 0px 0px 100px;
}
/* configuracion de las pestañas */
#tabs {
  position:absolute;
  left: 0px;
  top: 0px;
  margin:0;
  padding:0;
  width: 400px;
  overflow: hidden;
  z-index: 20;
}
#tabs li {
  float:left;
  */
  esto produce compatibilidad al redondear
  en los distintos navegadores
  /*
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  */
  esto impide seleccionar el contenido
  de las pestañas eliminando ese feo
  efecto de selección al clickar y
  arrastrar
  */
  user-select: none;
  list-style: none;
  margin: 1px 1px 0px 0px;
  display: block;
  height: 21px;
  line-height: 21px;
  padding: 0px 8px;
  outline: 0px none;
  font-family: arial;
  font-size: 10px;
  text-decoration: none;
  color: #000;
  border: 1px solid #91A7B4;
  border-bottom-width: 0px;
  background: #fff;
  border-radius: 4px 4px 0px 0px;
  cursor: pointer;
}
#tabs li.active {
  margin-top: 0px;
  height: 21px;
  line-height: 19px;
  border-top: 3px solid #324A62;
  cursor: default;
}
/* Configuración de los paneles */
#panel #paneles {
  position:absolute;
  left: 0px;
  top: 23px;
  width: 398px;
  height: 275px;
  border: 1px solid #91a7b4;
  border-radius: 0px 4px 4px 4px;
  background: #fff;
  overflow: hidden;
}
#panel #paneles &gt; div{
  margin:10px;
  width: 378px;
  height: 255px;
  font-family: arial;
  font-size: 12px;
  text-decoration: none;
  color: #000;
  overflow: auto;
}</pre>
<p>Y el javascript que hace que funcione todo esto</p>
<pre class="js">function cm_tabs(options)
{
  if((options.tab &amp;&amp; options.tab != '') &amp;&amp;
     (options.container &amp;&amp; options.container != ''))
  {
    var tabs		= document.getElementById(options.tab).children;
    var containers	= document.getElementById(options.container).children;

    for(var i=0; i&lt; tabs.length; i++)
    {
      tabs[i].i = i;
      containers[i].style.display = 'none';

      tabs[i].onclick = function()
      {
        for(var e=0; e &lt; containers.length; e++)
        {
          tabs[e].className = ''
          containers[e].style.display = 'none';
        }
        tabs[this.i].className = 'active';
        containers[this.i].style.display = 'block';
      }
    }

    if(options.active &amp;&amp; options.active &lt;= tabs.length &amp;&amp; options.active != '')
    {
      tabs[(options.active-1)].className = 'active';
      containers[(options.active-1)].style.display = 'block';
    } else {
      tabs[0].className = 'active';
      containers[0].style.display = 'block';
    }
  }
  return false;
}</pre>
<p>Finalmente ejecutamos el javascript con los parámetros que más nos convengan.</p>
<pre class="js">&lt;script type="text/javascript"&gt;
  cm_tabs({tab : 'tabs', container : 'paneles', active : 1});
&lt;/script&gt;</pre>
<p>Donde la propiedad &#8220;tab&#8221; representa el ID del contenedor de las pestañas, &#8220;container&#8221; de los paneles que conforman el contenido de las pestañas. Esto nos permitiría dado el caso, colocar las pestañas en un lado y el contenedor en otro. Finalmente &#8220;active&#8221; representa la pestaña que queremos se muestre como activa el ejecutar el script. Así de sencillo.</p>
<p>El código completo y listo para funcionar lo podéis obtener de los siguientes enlaces:<br />
[ <a title="Ejemplo de pestañas simples" onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs_simple.html','tab_simple','width=640,height=480,left='+(screen.availWidth/2-320)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs_simple.html">ejemplo de pestañas</a> ] [ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs.html','','width=640,height=480,left='+(screen.availWidth/2-320)+',top='+(screen.availHeight/2-240)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/otros_tabs/tabs_simple.html">otro ejemplo más complejo</a> ] [ <a title="Descarga de ejemplos" href="../wp-content/uploads/demos/otros_tabs/tabs.rar">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css%2C" title="en Bitacoras encuentre blogs que hablan acerca de  'css,'." rel="tag">css,</a>, <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/otro-sistema-de-pestanas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listados de posts en el admin de wordpress 3.1</title>
		<link>http://www.cmacias.com/listados-de-posts-en-el-admin-de-wordpress-3-1/</link>
		<comments>http://www.cmacias.com/listados-de-posts-en-el-admin-de-wordpress-3-1/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 00:54:23 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=432</guid>
		<description><![CDATA[Con gran ilusión actualizo un blog al recién sacado del horno Worpress 3.1 &#8211; eso si, en local, que las cosas hay que probarlas antes &#8211; y me llevo la primera sorpresa negativa. O soy yo que estoy pitoño o los listados de posts en el backend de WordPress no se ven como debiera. Mmmm, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-435" title="wordpress-logo" src="http://www.cmacias.com/wp-content/uploads/2011/02/wordpress-logo-e1298595202363.png" alt="" width="425" height="273" /></p>
<p>Con gran ilusión actualizo un blog al recién sacado del horno Worpress 3.1 &#8211; eso si, en local, que las cosas hay que probarlas antes &#8211; y me llevo la primera sorpresa negativa. O soy yo que estoy pitoño o los listados de posts en el backend de WordPress no se ven como debiera. Mmmm, empezamos mal.</p>
<p>Si bien es cierto, esto tiene una sencilla solución y sin necesidad de tener que tocar css de la administración ni plugins ni cosas raras.</p>
<p>Abrimos nuestro archivo functions.php y añadimos la siguientes líneas</p>
<pre class="php">function extra_css_admin() {

&nbsp;&nbsp; &nbsp;echo '&lt;link rel="stylesheet" type="text/css" media="all" href="'.TEMPLATEURL.'/admin-css.css" /&gt;';
}
add_action('admin_head', 'extra_css_admin');</pre>
<p>Con esto lo que conseguimos es añadir una nueva hoja de estilos a la zona de administración del wordpress y es aquí donde empieza la magia creando una hoja de estilos llamada &#8220;admin-css.css&#8221; &#8211; aunque también se puede llamar de otras formas &#8211; y dentro añadimos estas 3 declaraciones.</p>
<pre class="php">.posts {
&nbsp;&nbsp;&nbsp; &nbsp;width: auto !important;
}
.fixed .column-comments.sortable a, .fixed .column-comments.sorted a {
&nbsp;&nbsp;&nbsp; &nbsp;height: 16px;
}
.posts div {
&nbsp;&nbsp;&nbsp; &nbsp;height: auto;
}</pre>
<p>De esta manera sobreescribimos las css del propio wordpress mientras no sacan un parche que lo arregle.</p>
<p>Editado : Esto sólo ocurre con algunos plugins instalados.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/wordpress%2C" title="en Bitacoras encuentre blogs que hablan acerca de  'wordpress,'." rel="tag">wordpress,</a>, <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/listados-de-posts-en-el-admin-de-wordpress-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maquillando los input de tipos radio y checkbox.</title>
		<link>http://www.cmacias.com/maquillando-los-input-de-tipos-radio-y-checkbox/</link>
		<comments>http://www.cmacias.com/maquillando-los-input-de-tipos-radio-y-checkbox/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 08:35:58 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[diseño]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=406</guid>
		<description><![CDATA[Una de mis mayores obsesiones en la web son los campos de formulario. Son los elementos menos personalizables del html, ya que siempre nos obligan a utilizar javascript bien para reemplazar ese elemento o para implementar una funcionalidad que se pierde al utilizar css en un desplegable o en un campo de tipo file. Los [...]]]></description>
			<content:encoded><![CDATA[<p>Una de mis mayores obsesiones en la web son los campos de formulario. Son los elementos menos personalizables del html, ya que siempre nos obligan a utilizar javascript bien para <a title="Mejorando los selectBox" href="http://www.cmacias.com/mejorando-los-selectbox/" target="_blank">reemplazar ese elemento</a> o para implementar una funcionalidad que se pierde al utilizar css <a title="cambiando el aspecto de un SelectBox" href="http://www.cmacias.com/cambiando-el-aspecto-de-los-selectbox/" target="_blank">en un desplegable</a> o <a title="Maquillar un file upload" href="http://www.cmacias.com/maquillar-un-file-upload-2/" target="_blank">en un campo de tipo file</a>.</p>
<p>Los navegadores modernos (olvidaros de explorer) y las css avanzadas, nos permiten modificar &#8211; en este caso &#8211; y sin utilizar javascript, los input de tipo &#8220;checkbox&#8221; y &#8220;radio&#8221; con la ayuda de las etiquetas &#8220;label&#8221;, pudiendo personalizarlos hasta límites inimaginables. Como siempre, el límite lo pone nuestra creatividad.</p>
<p>Esto lo conseguimos con esta estructura</p>
<pre class="php">&lt;input type="checkbox" name="check_01" id="check_01" /&gt;
&lt;label for="check_01"&gt;Opción&lt;/label&gt;</pre>
<p>Con una imagen similar a esta</p>
<p><img title="check_02" src="http://www.cmacias.com/wp-content/uploads/2010/10/check_02.png" alt="" width="16" height="32" /><br />
<br clear="all" /></p>
<p>Y estas pequeñas líneas de css</p>
<pre class="css">input[type=checkbox] {display: none;}
input[type=checkbox] + label {
&nbsp;&nbsp; &nbsp;background: #fff;
&nbsp;&nbsp; &nbsp;display: inline-block;
&nbsp;&nbsp; &nbsp;width: 16px;
&nbsp;&nbsp; &nbsp;height: 16px;
&nbsp;&nbsp; &nbsp;background: url(img/check_02.png) 0px 0px no-repeat;
&nbsp;&nbsp; &nbsp;text-indent: -1000em;
}
input[type=checkbox]:checked + label {
background: url(img/check_02.png) 0px -16px no-repeat;
}</pre>
<p>Las cuales tienen una explicación muy sencilla.<br />
input[type=checkbox] nos permite seleccionar todos los campos &#8220;<strong>input</strong>&#8221; de tipo &#8220;<strong>checkbox</strong>&#8220;.</p>
<p>input[type=checkbox] + label nos permite seleccionar todos los campos &#8220;<strong>input</strong>&#8221; de tipo &#8220;<strong>checkbox</strong>&#8221; y además, el elemento &#8220;<strong>label</strong>&#8221; que se encuentre a continuación. No debe haber ningún otro elemento depués del campo &#8220;<strong>input</strong>&#8220;.</p>
<p>input[type=checkbox]:checked + label, nos permite seleccionar todos los campos &#8220;<strong>input</strong>&#8221; de tipo &#8220;<strong>checkbox</strong>&#8221; cuyo atributo &#8220;<strong>checked</strong>&#8221; sea igual a &#8220;<strong>checked</strong>&#8221; y además, el elemento &#8220;<strong>label</strong>&#8221; que se encuentre a continuación.</p>
<p>De esta manera, podemos hacer cosas similares a las que he montado en un ejemplo.</p>
<p>[ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/checkbox/index.html','checkbox','width=940,height=450,left='+(screen.availWidth/2-470)+',top='+(screen.availHeight/2-225)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/checkbox/index.html">ejemplo</a> ] [ <a title="Descarga personalización de radio y checkbox" href="http://www.cmacias.com/wp-content/uploads/demos/checkbox/checkbox.zip">descargar ejemplo</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/maquillando-los-input-de-tipos-radio-y-checkbox/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Abierta la inscripción de SubFlash 2010</title>
		<link>http://www.cmacias.com/abierta-la-inscripcion-de-subflash-2010/</link>
		<comments>http://www.cmacias.com/abierta-la-inscripcion-de-subflash-2010/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 22:25:44 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[jornadas]]></category>
		<category><![CDATA[subflash]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=396</guid>
		<description><![CDATA[Pués si, que no tengo perdón de Dios. Tanto tiempo sin escribir, y para una vez que lo hago no es para poner un script chulo, ni un código ni nada, aunque esta ocasión lo merece. Ya se ha abierto la inscripción de SubFlash 2010, que se ha convertido en un clásico, como el Ramón [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-398" title="SubFlash 2010" src="http://www.cmacias.com/wp-content/uploads/2010/08/sbfl2010.jpg" alt="SubFlash 2010" width="425" height="140" /><br />
Pués si, que no tengo perdón de Dios. Tanto tiempo sin escribir, y para una vez que lo hago no es para poner un script chulo, ni un código ni nada, aunque esta ocasión lo merece.</p>
<p>Ya se ha abierto la inscripción de SubFlash 2010, que se ha convertido en un clásico, como el Ramón de Carranza en la pretemporada, la ensalada de pasta en verano, que bello es vivir en navidades y los granos en primavera.</p>
<p>Como cada Agosto, tenemos a <span style="color: #3366ff;"><strong><a title="Marcos Sancho" href="http://www.q-interactiva.com" target="_blank">Marcos</a></strong></span> preparándolo todo a pesar de que lleve 3 años diciéndole que le voy a echar una mano para poder montarlo en Galicia (y suerte que no me haga caso).</p>
<p>Este año es en <span style="color: #3366ff;"><strong><a title="Talleres 2010" href="http://www.subflash.com/talleres/2010/" target="_blank">Bilbao</a></strong></span>,&nbsp; y en un <span style="color: #3366ff;"><strong><a title="Post en SubFlash" href="http://www.subflash.com/2010/08/10-ultra-high-end-quality-razones-de-peso-para-asisitir-a-subflash/" target="_blank">simpático post</a></strong></span> del <span style="color: #3366ff;"><strong><a title="SubFlash" href="http://www.subflash.com/" target="_blank">blog de SubFlash</a></strong></span>, nos comenta de que <span style="color: #3366ff;"><strong><a title="De que van a hablar ?" href="http://www.subflash.com/talleres/2010/php/sesiones.php" target="_blank">van a hablar</a></strong></span> y de como puedes <span style="color: #3366ff;"><strong><a title="inscripción" href="http://www.subflash.com/talleres/2010/php/registro.php" target="_blank">inscribirte</a></strong></span>.</p>
<p>Para ello nos da <strong>9 razones</strong> de peso:</p>
<ol>
<li>La gente guay.</li>
<li>Sé el buen amigo de tu bolsillo.</li>
<li>Igual hasta los 90 euros te los regalamos.</li>
<li>Los tacaños también tienen sitio.</li>
<li>Aprender.</li>
<li>Una experiencia.</li>
<li>El lugar.</li>
<li>Tú.</li>
<li>La experiencia.</li>
</ol>
<p>Al igual que en los años anteriores, Marcos, te auguro nuevamente un gran éxito. Mucha suerte !</p>
<p><strong>Subflash</strong>, <a href="http://www.subflash.com/talleres/2005/">2005</a>, <a href="http://www.subflash.com/talleres/2006/">2006</a>, <a href="http://www.subflash.com/talleres/2007/">2007</a>, <a href="http://www.subflash.com/talleres/2008/">2008</a>, <a href="http://www.subflash.com/talleres/2009/">2009</a>… y ahora te toca a ti en el <a href="http://www.subflash.com/talleres/2010/">2010</a>!</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/subflash" title="en Bitacoras encuentre blogs que hablan acerca de  'subflash'." rel="tag">subflash</a>, <a href="http://bitacoras.com/canales/2010" title="en Bitacoras encuentre blogs que hablan acerca de  '2010'." rel="tag">2010</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/abierta-la-inscripcion-de-subflash-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Reiniciar el aspecto de los botones con css</title>
		<link>http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/</link>
		<comments>http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 21:57:46 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=379</guid>
		<description><![CDATA[Al maquetar con css un sitio web &#8211; por lo general &#8211; se suele utilizar un reseteador de css, que deja a cero las propiedades de todos los elementos. Esto nos permite poder moldearlos a nuestro antojo, permitiendo que en la gran mayoría de los navegadores se visualice de la misma manera. Sin embargo, nuestro [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/button/" rel="attachment wp-att-391"><img src="http://www.cmacias.com/wp-content/uploads/2010/02/button.jpg" alt="" title="button" width="425" height="119" class="aligncenter size-full wp-image-391" /></a><br />
Al maquetar con css un sitio web &#8211; por lo general &#8211; se suele utilizar un reseteador de css, que deja a cero las propiedades de todos los elementos.</p>
<p>Esto nos permite poder moldearlos a nuestro antojo, permitiendo que en la gran mayoría de los  navegadores se visualice de la misma manera.</p>
<p>Sin embargo, nuestro querido <a href="http://www.getfirefox.com">Firefox</a>, se guarda una <strong>desagradable sorpresa</strong> y probablemente más de uno se haya dado cuenta. Y es que cuando tratamos de meter &#8211; por ejemplo &#8211; dentro de un  elemento <strong>&lt;button&gt;</strong> una etiqueta &#8211; por ejemplo un <strong>&lt;span&gt;</strong>, este nos deja un pequeño padding que nos impide colocar el <strong>&lt;span&gt;</strong> a nuestro gusto por mucho <strong>padding</strong> que le quitemos, por lo que terminamos metiendo una posición absoluta y pasamos el trago.</p>
<p>No es una solución que me agrada, ya que un simple padding a cero, debería bastar. Para conseguir arreglar esto, debemos añadir la siguiente línea a nuestro reseteador.</p>
<pre class=&quot;php&quot;>
&lt;style&gt;
   /** Eliminando el padding de los botones **/
   button::-moz-focus-inner { padding:0;border:none }
&lt;/style&gt;
</pre>
<p>Ahora podemos maquetar a gusto dentro de los elementos <strong>&lt;button&gt;</strong> sin miedo a nuevas e inesperadas sorpresas &#8230; o no ?</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/tips" title="en Bitacoras encuentre blogs que hablan acerca de  'tips'." rel="tag">tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/reiniciar-el-aspecto-de-los-botones-con-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ministerio de Igualdad</title>
		<link>http://www.cmacias.com/ministerio-de-igualdad/</link>
		<comments>http://www.cmacias.com/ministerio-de-igualdad/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 14:59:52 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=364</guid>
		<description><![CDATA[El ministerio de igualdad acaba de sacar un decreto en el que presentan un logo acompañado de la tipografía &#8220;Comic Sans&#8220;. No voy a emitir opinión alguna con respecto a la tipografía utilizada. Los que me conocen ya saben que opino. Si este logo lo sacan el 28 de Diciembre hubiera sido una muy buena [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img src="http://www.cmacias.com/wp-content/uploads/2009/12/igualdadenlaempresa.jpg" alt="" title="igualdadenlaempresa" /></p>
<p><br style="clear:both;"/></p>
<p>El ministerio de igualdad acaba de sacar un <a href="http://www.boe.es/boe/dias/2009/11/27/pdfs/BOE-A-2009-18961.pdf">decreto</a> en el que presentan un logo acompañado de la tipografía &#8220;<strong>Comic Sans</strong>&#8220;. No voy a emitir opinión alguna con respecto a la tipografía utilizada. Los que me conocen ya saben que opino. Si este logo lo sacan el 28 de Diciembre hubiera sido una muy buena inocentada</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/ministerio-de-igualdad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVN+SSH y Dreamweaver</title>
		<link>http://www.cmacias.com/svnssh-y-dreamweaver/</link>
		<comments>http://www.cmacias.com/svnssh-y-dreamweaver/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 17:29:02 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[dreamweaver]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=339</guid>
		<description><![CDATA[Dreamweaver CS4 viene con soporte de serie para Subversion, y reconozco que no consigo configurarlo como Dios manda para que funcione. El caso es que hay otra alternativa &#8211; creo que más sencilla &#8211; que además de afectar al DWCS4, nos permite disfrutar de Subversion en versiones anteriores (probado al menos hasta la versión 8 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cmacias.com/wp-content/uploads/2009/10/svn-dw.png" alt="svn-dw" title="svn-dw" width="425" height="101" class="alignnone size-full wp-image-343" /></p>
<p><strong>Dreamweaver CS4</strong> viene con soporte de serie para <strong>Subversion</strong>, y reconozco que no consigo configurarlo como Dios manda para que funcione. El caso es que hay otra alternativa &#8211; creo que más sencilla &#8211; que además de afectar al DWCS4, nos permite disfrutar de <strong>Subversion</strong> en versiones anteriores (probado al menos hasta la versión 8 )
</p>
<p><strong>Cuales son los requisitos necesarios ?</strong></p>
<p>Tener instalado un repositorio de Subversion en el servidor y un servidor Linux.</p>
<p><strong>Y que Software necesitamos?</strong></p>
<ul>
<li><a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=dreamweaver&#038;loc=en&#038;promoid=EBYEW">Dreamweaver versiones 8 a CS4</a></li>
<li><a href="http://winscp.net/eng/download.php">WinSCP</a></li>
<li><a href="http://ezcto.com/downloads/SVN4DW.zip">SVN4Dw (Extensión para dreamweaver)</a></li>
<li><a href="http://tortoisesvn.net/downloads">TortoriseSVN</a></li>
<li><a href="http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip">Putty</a></li>
</ul>
<p>Instalamos todo el software ya mencionado y extraemos el contenido de &#8220;<strong style="color: #069">putty.zip</strong>&#8221; en una carpeta (<strong style="color: #036;">archivos de programa/putty</strong>)</p>
<p>Ejecutamos &#8220;<strong style="color: #069;">putty</strong>&#8220;. Introducimos el <strong>host</strong> o la <strong>IP</strong> del servidor y un nombre para poder guardar la sesión, tratando de que sea distinto del host (p.ej SVN_Session). Guardamos la sesión y la volvemos a abrir.</p>
<p>Mediante la línea de comandos, nos logueamos en nuestra cuenta del servidor con el nombre y usuario (en caso de no disponer de una cuenta, habría que ponerse en contacto con el administrador de sistemas) y escribimos los siguientes comandos.</p>
<p class="consola">[~]$ ssh-keygen -t rsa</p>
<p>– Presionamos la tecla enter en cada prompt –</p>
<p class="consola">[~]$ chmod 700 .ssh<br />
[~]$ cd .ssh<br />
[~]$ cp id_rsa.pub authorized_keys<br />
[~]$ chmod 600 authorized_keys<br />
[~]$ chmod 711 ~<br />
[~]$ exit</p>
<p>Abrimos ahora el <strong style="color: #069">WinSCP</strong> y añadimos el <strong>host</strong> o <strong>IP</strong> del servidor, nombre de usuario, contraseña y seleccionamos &#8220;<strong>SCP</strong>&#8221; como protocolo. Hacemos click en Login.<br />
Ahora, en la carpeta &#8220;<strong>.ssh</strong>&#8220;, hay un archivo llamado &#8220;<strong>id_rsa</strong>&#8220;. Descarga este archivo a la carpeta &#8220;<strong>keys</strong>&#8221; de la carpeta en la que hayas descomprimido el &#8220;<strong style="color: #069">putty</strong>&#8220;. En caso de no existir esta carpeta, la creamos.</p>
<p>Dentro de la carpeta de Putty, ejecutamos &#8220;<strong style="color: #069">puttygen.exe</strong>&#8220;, y en el menú &#8220;<strong>conversions</strong>&#8220;, hacemos click en &#8220;<strong>import key</strong>&#8220;. Seleccionamos entonces la clave &#8220;<strong style="color: #036">id_rsa</strong>&#8221; que anteriormente descargamos con el <strong style="color: #069">WinSCP</strong>. Hacemos click en &#8220;<strong>open</strong>&#8221; y nos aseguramos de que &#8220;<strong style="color: #036">SSH-2 RSA</strong>&#8221; está seleccionado. Hacemos click en &#8220;Save private key&#8221;, y nuevamente hacemos click en &#8220;Yes&#8221; cuando nos pregunte si deseamos guardar sin contraseña. Guardamos el archivo con el mismo nombre de la sesión (SVN_Session)</p>
<p>Ejecutamos nuevamente putty.exe, seleccionamos la sesión guardada y hacemos click en &#8220;<strong style="color: #036;">load > Connection > SSH > Auth</strong>&#8220;, clickamos en &#8220;<strong style="color: #036;">Browse/Examinar</strong>&#8221; y seleccionado el archivo <strong>.ppk</strong> creado anteriormente. Hacemos scroll hacia arriba y seleccionamos la sesión. La guardamos y la abrimos. Escribimos el nombre de usuario cuando se nos solicite y debería aparecer un mensaje de la forma &#8220;Authenticating with public key…&#8221;. Si hay algún mensaje de error, comprueba que has seguido los pasos correctamente.</p>
<p>Estamos llegando al final. Nos vamos ahora a &#8220;<strong>Mi PC</strong>&#8221; y nos ubicamos en una unidad de disco (por ejemplo C:\). Hacemos click con el botón derecho del ratón y seleccionamos &#8220;<strong style="color: #036;">SVN Checkout</strong>&#8220;. La Url del repositorio debería ser similar a &#8220;<span style="color: #036;">svn+ssh://nombredeusuario+SVN_Session/home/ruta al repositorio de tu servidor</span>&#8220;.</p>
<p>Seleccionamos ahora un directorio donde ubicar el &#8220;Site&#8221; en Dreamweaver, hacemos click en &#8220;<strong>OK</strong>&#8221; y esperamos a que todos los archivos sean descargados.</p>
<p>Ahora abrimos Dreamweaver y creamos un nuevo Sitio web. Para la ruta local, seleccionamos el directorio que hemos seleccionado para descargar del repositorio.</p>
<p>Cada vez que modifiquemos un archivo, utilizamos el menú creado por la extensión antes instalada &#8220;<strong style="color: #069">SVN4Dw</strong>&#8220;, llamado &#8220;<strong style="color: #069">SVN</strong>&#8220;. Utilizamos los comandos &#8220;<strong>Commit</strong>&#8221; para añadir un archivo al repositorio (archivos modificados por nosotros) y &#8220;<strong>Update</strong>&#8221; para descargar los nuevos archivos (actualizados por otros usuarios).</p>
<p>Ya esta todo listo para poder utilizar el &#8220;SVN&#8221; desde Dreamveaver.</p>
<p>Por cierto, para simplificar estos pasos, es posible crear atajos de teclado desde el menú &#8220;<span style="color: #036;">Edición > Métodos abreviados de teclado&#8221; desde el propio Dreamaweaver</span>.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/svn" title="en Bitacoras encuentre blogs que hablan acerca de  'svn'." rel="tag">svn</a>, <a href="http://bitacoras.com/canales/dreamweaver" title="en Bitacoras encuentre blogs que hablan acerca de  'dreamweaver'." rel="tag">dreamweaver</a>, <a href="http://bitacoras.com/canales/subversion" title="en Bitacoras encuentre blogs que hablan acerca de  'subversion'." rel="tag">subversion</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/svnssh-y-dreamweaver/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Url de un dominio con Javascript 2</title>
		<link>http://www.cmacias.com/url-de-un-dominio-con-javascript-2/</link>
		<comments>http://www.cmacias.com/url-de-un-dominio-con-javascript-2/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 22:22:28 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=332</guid>
		<description><![CDATA[La entrada anterior y el comentario de Martin me hizo dudar por un momento. En ocasiones nos obcecamos de tal manera que no vemos que la solución es mucho más sencilla de lo que parece. En Javascript el objeto &#8220;location&#8221; tiene algunas propiedades más que útiles para poder llegar al resultado deseado sin tener que [...]]]></description>
			<content:encoded><![CDATA[<p>La entrada anterior y el comentario de <strong><a href="http://www.martiniglesias.eu/" target="_blank">Martin</a></strong> me hizo dudar por un momento. En ocasiones nos obcecamos de tal manera que no vemos que la solución es mucho más sencilla de lo que parece.</p>
<p>En Javascript el objeto &#8220;location&#8221; tiene algunas propiedades más que útiles para poder llegar al resultado deseado sin tener que crear una función como la anterior.</p>
<p>Estas propiedades son las siguientes :</p>
<ul>
<li><strong>href</strong><br />Es una cadena que contiene la URL completa.</li>
<li><strong>hash</strong><br />Cadena que contiene el nombre de la URL (aparece a la derecha de # en caso de tenerla)</li>
<li><strong>protocol</strong><br />Cadena que contiene el protocolo utilizado(dos puntos incluídos).</li>
<li><strong>host</strong><br />Cadena que contiene el nombre del host y el puerto.</li>
<li><strong>hostname</strong><br />Cadena que contiene el nombre de dominio o IP.</li>
<li><strong>pathname</strong><br />Cadena que contiene la URL sin nombre de dominio, protocolo y hash. </li>
<li><strong>port</strong><br />Cadena que nos devuelve puerto del servidor. </li>
<li><strong>search</strong><br />Cadena que guarda las variables que pasemos por la URL</li>
</ul>
<p><strong><a href="javascript:;" onclick="alert('hash : ' + document.location.hash + '\n' + 'hostname : ' + document.location.hostname + '\n' + 'host : ' + document.location.host + '\n' + 'protocol : ' + document.location.protocol + '\n' + 'href : ' + document.location.href + '\n' + 'port : ' + document.location.port + '\n' + 'search : ' + document.location.search + '\n' + 'pathname : ' + document.location.pathname)">Click para ver un ejemplo</a></strong></p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/url-de-un-dominio-con-javascript-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Url de un dominio con Javascript</title>
		<link>http://www.cmacias.com/url-de-un-dominio-con-javascript/</link>
		<comments>http://www.cmacias.com/url-de-un-dominio-con-javascript/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 13:09:03 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=319</guid>
		<description><![CDATA[Para un proyecto y por necesidades de &#8220;producción&#8221; necesitábamos saber cuál era el dominio base desde Javascript y a poder ser, sin utilizar php. La solución: capturar la url actual, separar el protocolo por un lado y el dominio junto con sus subdominios por otro lado (si los hubiere), y separar estos últimos, siendo el [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cmacias.com/wp-content/uploads/2009/10/url.png" alt="url" title="url" width="425" height="58" class="alignnone size-full wp-image-324" /><br />
Para un proyecto y por necesidades de &#8220;producción&#8221; necesitábamos saber cuál era el dominio base desde Javascript y a poder ser, sin utilizar php.</p>
<p>La solución: capturar la url actual, separar el protocolo por un lado y el dominio junto con sus subdominios por otro lado (si los hubiere), y separar estos últimos, siendo el primier elemento resultante el nombre del dominio.</p>
<p>El resultado es algo así.</p>
<pre class="javascript">
&lt;script type="text/javascript"&gt;

function dominio_base()
{
    // capturamos la url
    url_site      = document.location.href

    // La separamos por la doble barra
    url_pos      = url_site.indexOf('//');

    // por un lado tenemos la url sin protocolos
    url_limpia   = url_site.substr(url_pos+2);

    // y por otro lado el protocolo usado
    url_prot    = url_site.substr(0,url_pos+2);

    // separamos todas las posibles carpetas
    url_split 	  = url_limpia.split('/');

    // y obtenemos el dominio actual
    url_base 	= url_prot + url_split[0];

return url_base;
}

&lt;/script&gt;
</pre>
<p>Al llamar a la función, simplemente nos devuelve el dominio</p>
<pre class="javascript">
&lt;script type="text/javascript"&gt;
    // mostrarlo en un alert
    alert(dominio_base());

    // escribirlo en un documento
    document.writeIn('mi dominio es ' + dominio_base());
&lt;/script&gt;
</pre>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/url-de-un-dominio-con-javascript/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

