<?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 cajón desastre &#187; Blogs</title>
	<atom:link href="http://www.dubasdey.com/category/internet/blogs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dubasdey.com</link>
	<description></description>
	<lastBuildDate>Tue, 02 Jun 2009 14:25:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Enlaces para enviar a las Comunidades</title>
		<link>http://www.dubasdey.com/2007/05/12/enlaces-para-enviar-a-las-comunidades/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=enlaces-para-enviar-a-las-comunidades</link>
		<comments>http://www.dubasdey.com/2007/05/12/enlaces-para-enviar-a-las-comunidades/#comments</comments>
		<pubDate>Sat, 12 May 2007 11:43:22 +0000</pubDate>
		<dc:creator>Manuel Cernuda</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.dubasdey.com/2007/05/12/enlaces-para-enviar-a-las-comunidades/</guid>
		<description><![CDATA[
Ahora que en la Web 2.0 se han puesto de moda las comunidades de promoci&#243;n de noticias, todos tenemos que dejar de una manera accesible al usuario la posibilidad de enviar el permalink de nuestra web.

Por l&#243;gica tambi&#233;n seria &#250;til poder situarlos en nuestro RSS as&#237; que crearemos una funci&#243;n que genere el acceso a [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.dubasdey.com/wp-content/uploads/2007/04/logophp.png' alt='PHP' /></p>
<p>Ahora que en la <a href="http://es.wikipedia.org/wiki/Web_2.0" target="_blank" title="Web 2.0">Web 2.0</a> se han puesto de moda las comunidades de promoci&oacute;n de noticias, todos tenemos que dejar de una manera accesible al usuario la posibilidad de enviar el permalink de nuestra web.<br />
<br />
Por l&oacute;gica tambi&eacute;n seria &uacute;til poder situarlos en nuestro <abbr lang="en" title="Really Simple Syndication">RSS</abbr> as&iacute; que crearemos una funci&oacute;n que genere el acceso a estos servicios sin repetir c&oacute;digo. </p>
<pre>
<textarea name="code" class="php:nocontrols">
 // Comunidades
 function getComunities($postid) {
     $posturl = "http://www.melkorcete.com/index.php?p="; // Tu web hasta la variable $_GET
     $url = htmlentities( $posturl.$postid);                               // De cara a validacion
     ?>
         <a href="http://del.icio.us/post?url=<?= $url ?>" target="_blank">
             <img src="icos/delicious_s.gif" alt="Add to del.icio.us" />
         </a>
         <a href="http://meneame.net/submit.php?url=<?= $url ?>" target="_blank">
             <img src="icos/menealo.png" alt="Men&eacute;alo" />
         </a>
         <a href="http://digg.com/submit?phase=2&#038;url=<?= $url ?>" target="_blank">
             <img src="icos/digg.png" alt="Digg" />
         </a>
         <a href="http://tec.fresqui.com/post?url=<?= $url ?>" target="_blank">
             <img src="icos/fresqui.png" alt="Fresqui" />
         </a>
         <a href="http://www.blogmemes.com/post.php?url=<?= $url ?>" target="_blank">
             <img src="icos/blogmemes.png" alt="BlogMemes" />
         </a>
         <a href="http://furl.net/storeIt.jsp?&#038;u=<?= $url ?>" target="_blank">
             <img src="icos/toonfuse.png" alt="Furl" />
         </a>
         <a href="http://www.neodiario.net/submit.php?url=<?= $url ?>" target="_blank">
             <img src="icos/neodiario.png" alt="NeoDiario" />
         </a>
         <a href="http://www.melkorcete.com/index.php?p=<?= $postid ?>" target="_blank">
             <img src="icos/permalink.png" alt="Permalink" />
         </a>
     <?
 }
</textarea>
</pre>
<p>
Ahora solo faltar&iacute;a hace la llamada a esa funci&oacute;n donde quer&aacute;is que se incluyan nuestros enlaces. Estos ya est&aacute;n preparados para enviar correctamente, y los iconos pod&eacute;is copiarlos de esta misma web, con click derecho / guardar imagen como&#8230; </p>
<p>Espero que os sea de utilidad. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dubasdey.com/2007/05/12/enlaces-para-enviar-a-las-comunidades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como crear un RSS para tu p&#225;gina (y II)</title>
		<link>http://www.dubasdey.com/2007/04/24/como-crear-un-rss-para-tu-pgina-y-ii/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=como-crear-un-rss-para-tu-pgina-y-ii</link>
		<comments>http://www.dubasdey.com/2007/04/24/como-crear-un-rss-para-tu-pgina-y-ii/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 09:12:04 +0000</pubDate>
		<dc:creator>Manuel Cernuda</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Sindicacion]]></category>

		<guid isPermaLink="false">http://www.dubasdey.com/2007/04/24/como-crear-un-rss-para-tu-pgina-y-ii/</guid>
		<description><![CDATA[
Ahora solo falta saber como generar&#237;amos este c&#243;digo XML desde nuestra web de manera autom&#225;tica. Para ello utilizaremos PHP conectado a nuestra base de datos de MySQL (Voy a ponerlo lo mas gen&#233;rico posible, cada uno, incluido yo, tenemos nuestras funciones de acceso a base de datos, pero as&#237; todo el mundo podr&#225; verlo de [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.dubasdey.com/wp-content/uploads/2007/04/rss.png' alt='RSS' /><br />
Ahora solo falta saber como generar&iacute;amos este c&oacute;digo <abbr lang="en" title="eXtensible Markup Language">XML</abbr> desde nuestra web de manera autom&aacute;tica. Para ello utilizaremos <abbr lang="en" title="PHP: Hypertext Preprocessor">PHP</abbr> conectado a nuestra base de datos de <a href="http://www.mysql.com" title="Get MySQL">MySQL</a> (Voy a ponerlo lo mas gen&eacute;rico posible, cada uno, incluido yo, tenemos nuestras funciones de acceso a base de datos, pero as&iacute; todo el mundo podr&aacute; verlo de manera clara). </p>
<p>\r\n			Para empezar, el archivo ser&aacute; un .php para que el servidor ejecute nuestro c&oacute;digo, pero para ello necesitamos enga&ntilde;ar al navegador cambiando el content type del archivo, para que una vez ejecutado se interprete como <abbr lang="en" title="eXtensible Markup Language">XML</abbr> y no como <abbr lang="en" title="eXtensible Hypertext Markup Language">XHTML</abbr> o <abbr lang="en" title="Hypertext Markup Language">HTML</abbr>.</p>
<p><code><br />
<?php<br />
header("Content-type: text/xml; charset=ISO-8859-1",true);<br />
print "<?xml version=\\"1.0\\" encoding=\\"ISO-8859-1\\" ?>";<br />
?><br />
</code></p>
<p>Inmediatamente despu&eacute;s, comenzar&iacute;amos rellenando la informaci&oacute;n del channel manualmente excepto el <code>&lt;pubDate&gt;</code> que puede automatizarse. La parte interesante llega con los <code>&lt;item&gt;</code>. Haremos una consulta que nos devuelva las ultimas 25 entradas de nuestra p&aacute;gina (esta os toca hacerla a vosotros, ya que cada modelo de datos es diferente, y no funcionaria una en general). Ser&aacute; del estilo a esta:</p>
<p><code><br />
SELECT * FROM POSTS ORDER BY POSTID DESC LIMIT 0,25<br />
</code>	</p>
<p>Ahora utilizaremos esa consulta para recorrer los resultados generando un <code>&lt;item&gt;</code> por cada fila que nos devuelva. Para ello usaremos la conexi&oacute;n entre <abbr lang="en" title="PHP: Hypertext Preprocessor">PHP</abbr> y <a href="http://www.mysql.com" title="Get MySQL">MySQL</a>.\r\n	</p>
<p><code><br />
<?php</p>
<p>     // Objeto de Conexi&oacute;n<br />
      $conexion = mysql_pconnect(\’RUTA_SERVIDOR\’,\’USUARIO\’,\’CONTRASE&ntilde;A\’);<br />
      mysql_select_db(\’NOMBRE_BD\’,$conexion) or die(mysql_error());</p>
<p>    // Ejecutar la consulta ($consulta contiene la consulta SQL citada anteriormente)</p>
<p>    $resultado = mysql_query($consulta) or die(mysql_error());<br />
    // Mientras $resultado siga devolviendo filas creamos un <item><br />
    while ($fila=mysql_fetch_array($resultado)) {<br />
        ?><br />
            <item></p>
<link>http://www.web.com/index.php?p=<?= $fila["POSTID"] ?></link>
<pubDate><?= date("r",makeDate($fila["FECHA"])) ?></pubDate>
                <dc:creator>AUTOR&lt;AUTORl@web.com&gt;</dc:creator><br />
                <guid isPermaLink="true">http://web.com/index.php?p=<?=$fila["IDPOST"] ?></guid></p>
<p>                <description><![CDATA[ <?=$fila["POST"] ?>]]&gt;</description><br />
             </item><br />
         <?<br />
     }</p>
<p>?><br />
</code></p>
<p>Como ya avise antes, hay que tener cuidado con las con las fechas del <code>&lt;pubDate&gt;</code>, para eso utilizo una funci&oacute;n que me paso <a href="http://dubasdey.com/rss.php" title="RSS" target="_blank"><img src="http://www.melkorcete.com/icos/feed.png" alt="Feed" border="0" /></a><a href="http://dubasdey.com" target="_blank" title="El Caj&oacute;n Desastre">dubas</a> que soluciona ese problemilla convirtiendo la fecha al formato de <a href="http://asg.web.cmu.edu/rfc/rfc822.html" target="_blank" title="RFC 822">RFC 822</a> v&aacute;lido. </p>
<p><code><br />
 function makeDate($date) {<br />
      $dm=explode(\’ \’,$date);<br />
      $f=explode(\’-\’,$dm[0]);<br />
      $h=explode(":",$dm[1]);<br />
      return mktime($h[0],$h[1],$h[2],$f[1],$f[2],$f[0]);<br />
 }<br />
</code></p>
<p>Con esto ya tendr&iacute;ais la base de vuestro <abbr lang="en" title="Really Simple Syndication">RSS</abbr>, otras cosas que pod&eacute;is a&ntilde;adirle, es controlar si se introducen valores por <code>$_GET</code> (rss.php?c=1) para tener <abbr lang="en" title="Really Simple Syndication">RSS</abbr> que filtre por categor&iacute;as. Eso ya os lo dejo a vuestro criterio. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dubasdey.com/2007/04/24/como-crear-un-rss-para-tu-pgina-y-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como crear un RSS para tu p&#225;gina (I)</title>
		<link>http://www.dubasdey.com/2007/04/20/como-crear-un-rss-para-tu-pgina-i/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=como-crear-un-rss-para-tu-pgina-i</link>
		<comments>http://www.dubasdey.com/2007/04/20/como-crear-un-rss-para-tu-pgina-i/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 18:44:49 +0000</pubDate>
		<dc:creator>Manuel Cernuda</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Sindicacion]]></category>

		<guid isPermaLink="false">http://www.dubasdey.com/2007/04/20/como-crear-un-rss-para-tu-pgina-i/</guid>
		<description><![CDATA[
Mucha gente que se hace su propia web o blog, independientemente de cual sea su motivo, querr&#225; disponer de los servicios habituales de una web o un blog convencional. Estas utilidades de las que disponen los CMS, son ya casi imprescindibles para el correcto uso y disfrute de las mismas, y por tanto renunciar a [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.dubasdey.com/wp-content/uploads/2007/04/rss.png' alt='RSS' /><br />
Mucha gente que se hace su propia web o blog, independientemente de cual sea su motivo, querr&aacute; disponer de los servicios habituales de una web o un blog convencional. Estas utilidades de las que disponen los <abbr lang="en" title="Content Management System">CMS</abbr>, son ya casi imprescindibles para el correcto uso y disfrute de las mismas, y por tanto renunciar a un <abbr lang="en" title="Content Management System">CMS</abbr> no puede significar renunciar a estos servicios. </p>
<p>Una de las utilidades m&aacute;s necesarias para cualquier p&aacute;gina es el <abbr lang="en" title="Really Simple Syndication">RSS</abbr> o feed. Para los no iniciados, el feed es un documento en formato <abbr lang="en" title="eXtensible Markup Language">XML</abbr> que contiene informaci&oacute;n, titulares y noticias de una web, de manera que cada vez que se actualiza, el feed tambi&eacute;n lo hace. Existen muchos programas cuyo prop&oacute;sito es gestionar estos feeds. Es una buena manera de estar al d&iacute;a con las p&aacute;ginas / blogs / planets que sigues habitualmente sin tener que abrirlas todas, y siempre puedes acceder desde ellos a esa noticia / post en concreto para comentar (en el caso de que se pueda) o ver la pagina en tu navegador habitual. </p>
<p>Como se cit&oacute; anteriormente, el formato de &eacute;ste documento es <abbr lang="en" title="eXtensible Markup Language">XML</abbr>, por tanto <a href="http://blogs.law.harvard.edu/tech/rss" target="_blank" title="RSS 2.0 Reference">tendremos que ce&ntilde;irnos a una referencia</a> para que este documento sea standard y as&iacute; nadie tenga problemas con &eacute;l, ampliando un poco mas la accesibilidad de nuestra p&aacute;gina / blog. Adem&aacute;s, la familia de los feeds se divide en dos escuelas mayoritarias, el <abbr lang="en" title="Really Simple Syndication">RSS</abbr> (0.x, 1.0 y 2.0) y Atom (1.0). Este &uacute;ltimo naci&oacute; para tratar de unificar el <abbr lang="en" title="Really Simple Syndication">RSS</abbr> o RDF y ha acabo siendo un nuevo modelo pese a seguir en desarrollo. </p>
<p>Nosotros vamos a centrarnos en el m&aacute;s com&uacute;n y en principio preferido por la mayor&iacute;a de los desarrolladores, el <abbr lang="en" title="Really Simple Syndication">RSS 2.0 </abbr>. Lo primero que tenemos que entender es la estructura b&aacute;sica de nuestro <abbr lang="en" title="eXtensible Markup Language">XML</abbr>. </p>
<p><rss version="2.0" ><br />
     <channel><br />
         <title></title></p>
<link></link>
         <description></description><br />
         <image><br />
                 <url></url></p>
<link></link>
                 <title></title><br />
         </image></p>
<pubDate></pubDate>
     </channel><br />
     <item><br />
         <title></title></p>
<link></link>
         <category></category></p>
<pubDate></pubDate>
         <dc:creator></dc:creator><br />
         <guid isPermaLink="true"></guid><br />
     </item><br />
 </rss></p>
<p>Este seria el orden habitual de creaci&oacute;n del <abbr lang="en" title="eXtensible Markup Language">XML</abbr> para un <abbr lang="en" title="Really Simple Syndication">RSS</abbr>. Para poder utilizar la mayor&iacute;a de estas etiquetas, es necesario especificar una serie de doctypes que proveer&aacute;n al documento de significado. Los m&aacute;s habituales son estos: </p>
<p><rss version="2.0" xmlns:Dc="http://purl.org/dc/elements/1.1/"<br />
     xmlns:Sy="http://purl.org/rss/1.0/modules/syndication/"<br />
     xmlns:admin="http://webns.net/mvcb/"<br />
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"<br />
     xmlns:content="http://purl.org/rss/1.0/modules/content/"<br />
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"<br />
     xmlns:dc="http://purl.org/dc/elements/1.1/" ></p>
<p>Ahora, vamos a ver para qu&eacute; son las etiquetas. Comenzamos con <code>&lt;channel&gt;</code>, que es un meta-elemento, es decir, va a proporcionar informaci&oacute;n sobre el feed y sobre la web a la que pertenece. Todos sus subitems estar&aacute;n relacionados con dicha informaci&oacute;n.</p>
<p>El siguiente elemento mas importante es <code>&lt;item&gt;</code>, y deber&aacute; haber uno completo por cada entrada que se quiera enviar v&iacute;a <abbr lang="en" title="Really Simple Syndication">RSS</abbr>. Por lo general entre 5 y 25 entradas. Lo que identifica a un <code>&lt;item&gt;</code> es su <code>&lt;guid&gt;</code>, que es un identificador &uacute;nico que servir&aacute; a los agregadores para saber si hay elementos nuevos, adem&aacute;s del <code>&lt;pubDate&gt;</code> del <code>&lt;channel&gt;</code>. Si el <code>&lt;guid&gt;</code> ya existe, el agregador lo ignorar&aacute; (esto es importante de cara a las modificaciones de una entrada). </p>
<p>Hay que tener en cuenta, que el <code>&lt;pubDate&gt;</code> no admite nada mas que fechas en formato <a href="http://asg.web.cmu.edu/rfc/rfc822.html" target="_blank">RFC 822</a>, por tanto tal vez debamos crearnos una funci&oacute;n que devuelva el valor almacenado en ese formato m&aacute;s espec&iacute;fico.</p>
<p>La <code>&lt;image&gt;</code> esta formada por tres subitems, <code>&lt;url&gt;</code> (el <code>src</code> de la imagen), <code>&lt;link&gt;</code> (la <abbr lang="en" title="Uniform Resource Locator">URL</abbr> a la que apunta la imagen) y <code>&lt;title&gt;</code> (el texto alternativo o <code>alt</code>). Estos subitems se renderizan en un equivalente al <code>&lt;a href=&quot;link&quot;&gt;&lt;img src=&quot;url&quot; alt=&quot;title&quot; /&gt;&lt;/a&gt;</code>.</p>
<p> Y con &eacute;sto ya quedar&iacute;a claro que es un <abbr lang="en" title="Really Simple Syndication">RSS</abbr>&#8230; En el proximo art&iacute;culo lo generaremos con <abbr lang="en" title="PHP: Hypertext Preprocessor">PHP</abbr> y <a href="http://www.mysql.com" title="Get MySQL">MySQL</a>.</p>
<p>To be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dubasdey.com/2007/04/20/como-crear-un-rss-para-tu-pgina-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear plugins para Windows Live! Writer</title>
		<link>http://www.dubasdey.com/2006/09/12/crear-plugins-para-windows-live-writer/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=crear-plugins-para-windows-live-writer</link>
		<comments>http://www.dubasdey.com/2006/09/12/crear-plugins-para-windows-live-writer/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 18:43:18 +0000</pubDate>
		<dc:creator>Kuroneko</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Live Writer]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dubasdey.com/2007/03/12/crear-plugins-para-windows-live-writer/</guid>
		<description><![CDATA[
Crear un plugin para Windows Live! Writer puede resultar muy sencillo. Existen dos formas de crear los plugins, una “Simple” donde simplemente mostramos un dialogo donde pedimos los datos que queramos y despu&#233;s creamos el HTML y otro m&#233;todo mas complejo en el cual adem&#225;s proveemos un control para poder editar el contenido que hemos [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Crear un plugin para Windows Live! Writer puede resultar muy sencillo. Existen dos formas de crear los plugins, una <em>“Simple”</em> donde simplemente mostramos un dialogo donde pedimos los datos que queramos y despu&eacute;s creamos el <em>HTML</em> y otro m&eacute;todo mas complejo en el cual adem&aacute;s proveemos un control para poder editar el contenido que hemos insertado.
<p>Hoy voy a explicar como hacer el plugin m&aacute;s simple. Solo hemos de empezar creando una Biblioteca de clases de .NET, Windows Live! Writer acepta vb.net y c# tanto sobre .NET 1.1 como 2.0 para los plugins
<p>A este proyecto hemos de importarle el ensamblado <strong>WindowsLive.Writer.Api.dll</strong> que se encuentra el la carpeta de nuestra instalaci&oacute;n de Windows Live! Writer e importar el espacio de nombres <strong>WindowsLive.Writer.Api</strong>, con esto ya tenemos todo listo para empezar a trabajar
<p>&nbsp;</p>
<pre class="csharp" style="border-right: #d0d0d0 1px solid; border-top: #d0d0d0 1px solid; border-left: #d0d0d0 1px solid; color: #000066; border-bottom: #d0d0d0 1px solid">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Windows</span>.<span class="me1">Forms</span>;</div>
<li class="li1">
<div class="de1"><span class="kw1">using</span> WindowsLive.<span class="me1">Writer</span>.<span class="me1">Api</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"><span class="kw1">namespace</span> HelloWorldPlugin<span class="br0">{</span></div>
<li class="li2">
<div class="de2"> <span class="br0">[</span>WriterPlugin<span class="br0">(</span><span class="st0">"605EEA63-B54B-4e6d-A290-F5E9E8229FC1"</span>, <span class="st0">"Simple Hola Mundo"</span>, </div>
<li class="li1">
<div class="de1"> ImagePath = <span class="st0">"Imagenes.icono.png"</span>,</div>
<li class="li1">
<div class="de1"> PublisherUrl = <span class="st0">"http://www.dubasdey.com"</span>,</div>
<li class="li1">
<div class="de1"> Description = <span class="st0">"Escribe un mensaje en h2."</span><span class="br0">)</span><span class="br0">]</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li2">
<div class="de2"> <span class="br0">[</span>InsertableContentSource<span class="br0">(</span> <span class="st0">"Simple Hola Mundo"</span> <span class="br0">)</span><span class="br0">]</span></div>
<li class="li1">
<div class="de1"> <span class="kw1">public</span> <span class="kw4">class</span> SimpleHelloWorldPlugin : ContentSource<span class="br0">{</span></div>
<li class="li1">
<div class="de1"> <span class="kw1">public</span> SimpleHelloWorldPlugin<span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><span class="br0">}</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> <span class="kw1">public</span> <span class="kw1">override</span> DialogResult CreateContent<span class="br0">(</span>IWin32Window dialogOwner, <span class="kw1">ref</span> <span class="kw4">string</span> newContent<span class="br0">)</span><span class="br0">{</span></div>
<li class="li2">
<div class="de2"> <span class="co1">// Creamos el dialogo HelloWorldInsertForm, que contiene</span></div>
<li class="li1">
<div class="de1"> <span class="co1">// una caja de texto y la propiedad Message para obteber su valor</span></div>
<li class="li1">
<div class="de1"> HelloWorldInsertForm insertForm = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> HelloWorldInsertForm<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> DialogResult result = insertForm.<span class="me1">ShowDialog</span><span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> <span class="kw1">if</span><span class="br0">(</span>result==DialogResult.<span class="me1">OK</span><span class="br0">)</span><span class="br0">{</span> <span class="co1">// Si el resultado es OK creamos el contenido</span></div>
<li class="li2">
<div class="de2"> newContent = <span class="st0">"&lt;h2&gt;"</span> + insertForm.<span class="me1">Message</span> + <span class="st0">"&lt;/h2&gt;"</span>; </div>
<li class="li1">
<div class="de1"> <span class="br0">}</span></div>
<li class="li1">
<div class="de1"> <span class="kw1">return</span> result;</div>
<li class="li1">
<div class="de1"> <span class="br0">}</span></div>
<li class="li1">
<div class="de1"> <span class="br0">}</span></div>
<li class="li2">
<div class="de2"><span class="br0">}</span> </div>
</li>
</ol>
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Bien lo primero que vemos en el c&oacute;digo son una serie de atributos entre corchetes.<br />El primero, <strong>WriterPlugin</strong>, se usa para especificar que es un plugin de WindowsLive.Writer asi como una serie de propiedades del mismo. La primera cadena corresponde a un <strong>GUID</strong> que identificara &&uacute;acute;nicamente al plugin (cada plugin tiene que tener su GUID), despu&eacute;s tenemos el nombre del plugin, que es el nombre que tendr&aacute; a la vista, la siguiente cadena corresponde a la ruta (dentro del ensamblado) de una imagen PNG de 20&#215;18 p&iacute;xeles insertada como recurso incrustado que se usara como icono del plugin, los siguientes dos textos corresponden a una URL y una descripci&oacute;n para el Plugin.
<p>&nbsp;
<p>El siguiente atributo <strong>InsertableContentSource</strong> solo lleva el nombre del plugin y sirve para indicar que el plugin pertenece a un contenido insertable.
<p>&nbsp;
<p>Lo siguiente que necesitamos despues de a&ntilde;adir estos atributos a nuestra clase es que la clase herede de <strong>ContentSource</strong> y sobreescribir como vemos el metodo <strong>CreateContent</strong>.
<p>&nbsp;
<p><strong>CreateContent</strong> recive 2 parametros, el primero es el manejador de la ventana propietaria, para hacer un dialogo modal a esa ventana y el segundo es un valor de cadena por referencia donde escribiremos el codigo <em>HTML</em> que queramos depositar. Por ultimo el metodo devuelve un <strong>DialogResult</strong> con el que indicaremos si el usuario acepto las operaciones y cancelo. En esta funcion podremos hacer lo que necesitemos, por ejemplo crear un dialogo para pedir un texto como en el ejemplo y devolver ese texto como Heading 2 reescribiendo la cadena <strong>NewContent</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dubasdey.com/2006/09/12/crear-plugins-para-windows-live-writer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

