<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Carlos Cano weblog</title>
	<atom:link href="http://ccanov.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ccanov.wordpress.com</link>
	<description>Blog de tecnología .Net y Microsoft Office SharePoint Server</description>
	<lastBuildDate>Sun, 29 Nov 2009 12:51:23 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ccanov.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/57d2aadc57d3f1696eac590d0051f21b?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Carlos Cano weblog</title>
		<link>http://ccanov.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ccanov.wordpress.com/osd.xml" title="Carlos Cano weblog" />
	<atom:link rel='hub' href='http://ccanov.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Ya estoy en Geeks.ms</title>
		<link>http://ccanov.wordpress.com/2009/11/29/ya-estoy-en-geeks-ms/</link>
		<comments>http://ccanov.wordpress.com/2009/11/29/ya-estoy-en-geeks-ms/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:51:23 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/?p=282</guid>
		<description><![CDATA[Hola todos, Quería compartir con todos mis lectores, que desde el día de hoy, podréis seguir mis entradas tanto desde mi nuevo blog en Geeks.ms, como en éste. Algunos de vosotros os estareis preguntando ¿Qué es eso de Geeks.ms? Por explicarlo brevemente, es un comunidad en la que miembros relevantes de la comunidad en torno a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=282&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola todos,</p>
<p>Quería compartir con todos mis lectores, que desde el día de hoy, podréis seguir mis entradas tanto desde <a href="http://geeks.ms/blogs/ccanov" target="_blank">mi nuevo blog</a> en <a href="http://geeks.ms" target="_blank">Geeks.ms</a>, como en éste.</p>
<p>Algunos de vosotros os estareis preguntando ¿Qué es eso de <a title="Geeks.ms" href="http://geeks.ms/blogs/rcorral/archive/2007/12/24/geeks-ms-vuestro-sitio.aspx" target="_blank">Geeks.ms</a>? Por explicarlo brevemente, es un comunidad en la que miembros relevantes de la comunidad en torno a las tecnologías de Microsoft comparten sus conocimientos, y aunque actualmente no sea un miembro relevante, tengo la oportunidad de compartir y aprender con ellos y de ellos.</p>
<p><a href="http://ccanov.files.wordpress.com/2009/11/banner20geeks20234x60.jpg"><img class="aligncenter size-full wp-image-283" title="geeks.ms" src="http://ccanov.files.wordpress.com/2009/11/banner20geeks20234x60.jpg?w=500" alt="geeks.ms"   /></a></p>
<p>Un Saludo a todos, y nos vemos en <a href="http://geeks.ms" target="_blank">Geeks.ms</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/282/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=282&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/29/ya-estoy-en-geeks-ms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>

		<media:content url="http://ccanov.files.wordpress.com/2009/11/banner20geeks20234x60.jpg" medium="image">
			<media:title type="html">geeks.ms</media:title>
		</media:content>
	</item>
		<item>
		<title>Acceso a las Bases de Datos de MOSS/WSS</title>
		<link>http://ccanov.wordpress.com/2009/11/25/acceso-a-las-bases-de-datos-de-mosswss/</link>
		<comments>http://ccanov.wordpress.com/2009/11/25/acceso-a-las-bases-de-datos-de-mosswss/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 14:29:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Administración MOSS]]></category>
		<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Configuración]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/2009/11/25/acceso-a-las-bases-de-datos-de-mosswss/</guid>
		<description><![CDATA[He encontrado información acerca de las bases de datos que se crean y llenan de datos con nuestros fantásticos sitios de SharePoint, pero que nunca se por donde cogerlas…&#160; Me apunto estos enlaces en el blog, para encontrarlos luego fácilmente… Os dejo unos enlaces que pueden ser de utilidad: Tablas de la Base de Datos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=280&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>He encontrado información acerca de las bases de datos que se crean y llenan de datos con nuestros fantásticos sitios de SharePoint, pero que nunca se por donde cogerlas…&#160; </p>
<p>Me apunto estos enlaces en el blog, para encontrarlos luego fácilmente…</p>
<p>Os dejo unos enlaces que pueden ser de utilidad:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/dd624759(office.11).aspx" target="_blank">Tablas de la Base de Datos de Contenido</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/dd624758(office.11).aspx" target="_blank">Tablas de la Base de Datos de Configuración</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/dd587562(office.11).aspx" target="_blank">Tablas de la Base de Datos</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/dd624760(office.11).aspx" target="_blank">Procedimientos almacenados</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=280&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/25/acceso-a-las-bases-de-datos-de-mosswss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
		<item>
		<title>Estructura de sitios utilizando PortalProvissioningProvider</title>
		<link>http://ccanov.wordpress.com/2009/11/25/estructura-de-sitios-utilizando-portalprovissioningprovider/</link>
		<comments>http://ccanov.wordpress.com/2009/11/25/estructura-de-sitios-utilizando-portalprovissioningprovider/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 08:22:17 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/?p=247</guid>
		<description><![CDATA[Cuando se trabaja con definiciones de sitio en WSS/MOSS se tiende a pensar que únicamente nos proporcionan la base para la creación de sitios con una determinada estructura de listas/bibliotecas y elementos básicos de configuración. En una próxima entrada comentare como crear una definición de sitio, y muchas de las features no documentadas por Microsoft, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=247&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Cuando se trabaja con definiciones de sitio en WSS/MOSS se tiende a pensar que únicamente nos proporcionan la base para la creación de sitios con una determinada estructura de listas/bibliotecas y elementos básicos de configuración.</p>
<p style="text-align:justify;">En una próxima entrada comentare como crear una definición de sitio, y muchas de las features no documentadas por Microsoft, que permiten realizar la mayoría de las opciones que se muestran en la página de “Configuración de Sitio”. En esta entrada, veremos que utilizar las definiciones que proporciona microsoft, para crear una colección de sitios con subsitios en varios niveles, empleando únicamente los ficheros xml de configuración.</p>
<p style="text-align:justify;">La estructura que crearemos será la siguiente:</p>
<p style="text-align:center;"><a href="http://ccanov.files.wordpress.com/2009/11/estructura.jpg"><img class="aligncenter" style="display:inline;" title="Estructura" src="http://ccanov.files.wordpress.com/2009/11/estructura_thumb.jpg?w=504&#038;h=260" border="0" alt="Estructura" width="504" height="260" /></a></p>
<p><span id="more-247"></span></p>
<p style="text-align:justify;">Una vez tenemos clara la estructura que vamos a crear, únicamente necesitamos crear 2 ficheros xml:</p>
<p style="text-align:justify;"><strong>webtempMySiteProvider.xml:</strong> (ubicado en 12/TEMPLATE/3082/XML) en este fichero, definiremos la definición de sitio que se va a emplear. No hay que crear una definición de sitio como tal, lo que pretendemos es que aparezca en la página de creación de sitios. A continuación se muestra el contenido del fichero:</p>
<p><pre class="brush: xml; wrap-lines: false;">
&lt;Templates xmlns:ows=&quot;Microsoft SharePoint&quot;&gt;
  &lt;Template Name=&quot;MySiteProvider&quot; ID=&quot;10900&quot;&gt;
    &lt;Configuration ID=&quot;0&quot; Title=&quot;Estrucutura desde xml&quot; Hidden=&quot;FALSE&quot; ImageUrl=&quot;/_layouts/images/stsprev.png&quot; Description=&quot;Definicion que creaa toda la estructura de la coleccion de sitios&quot; ProvisionAssembly=&quot;Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot; ProvisionClass=&quot;Microsoft.SharePoint.Publishing.PortalProvisioningProvider&quot; ProvisionData=&quot;xml\\estructura.xml&quot; RootWebOnly=&quot;TRUE&quot; DisplayCategory=&quot;MiTopologia&quot; /&gt;
   &lt;/Template&gt;
&lt;/Templates&gt;
</pre></p>
<p>Como se puede ver, aparentemente se trata de una definición de sitio básica, salvo por las propiedades:</p>
<ul style="text-align:justify;">
<li><em>ProvissionAssembly</em>: especifica que librería se utilizará para el aprovisionamiento del sitio.</li>
<li><em>ProvissionClass</em>: especifica que clase se utilizará para el aprovisionamiento del sitio.</li>
<li style="text-align:justify;"><em>ProvisionData</em>: especifica el fichero que proporciona los datos para el aprovisionamiento. En nuestro caso estructura.xml</li>
</ul>
<p style="text-align:justify;"><strong>estructura.xml:</strong> (ubicado en 12/TEMPLATE/3082/XML) en este fichero se especifica la estructura que hay que crear, utilizando el esquema <em>PortalSchema.xsd.</em> Mediante el uso de  y  especificaremos los sitios y subsitios que se van a crear. El fichero estructura.xml, con la estructura especificada en la imagen, quedaría de la siguiente forma:</p>
<p><pre class="brush: xml; wrap-lines: false;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;portal xmlns=&quot;PortalTemplate.xsd&quot;&gt;
  &lt;web name=&quot;Inicio&quot; siteDefinition=&quot;CMSPUBLISHING#0&quot; displayName=&quot;Inicio&quot; description=&quot;Inicio&quot; &gt;
    &lt;webs&gt;
      &lt;web name=&quot;sitio1&quot; siteDefinition=&quot;STS#0&quot; displayName=&quot;Sitio 1&quot; description=&quot;Sitio 1&quot;/&gt;
      &lt;web name=&quot;sitio2&quot; siteDefinition=&quot;MPS#0&quot; displayName=&quot;Sitio 2&quot; description=&quot;Sitio 2&quot;/&gt;
      &lt;web name=&quot;sitio3&quot; siteDefinition=&quot;STS#1&quot; displayName=&quot;Sitio 3&quot; description=&quot;Sitio 3&quot;/&gt;
       &lt;webs&gt;
        &lt;web name=&quot;blog&quot; siteDefinition=&quot;BLOG#0&quot; displayName=&quot;Blog&quot; description=&quot;Blog&quot;/&gt;
        &lt;web name=&quot;wiki&quot; siteDefinition=&quot;WIKI#0&quot; displayName=&quot;Wiki&quot; description=&quot;wiki&quot;/&gt;
       &lt;/webs&gt;
      &lt;/web&gt;
      &lt;web name=&quot;sitio4&quot; siteDefinition=&quot;SRCHCEN#0&quot; displayName=&quot;Sitio 4&quot; description=&quot;Sitio 4&quot;/&gt;
      &lt;web name=&quot;sitio5&quot; siteDefinition=&quot;SPSREPORTCENTER#0&quot; displayName=&quot;Sitio 5&quot; description=&quot;Sitio 5&quot;/&gt;
    &lt;/webs&gt;
  &lt;/web&gt;
&lt;/portal&gt;
</pre></p>
<p style="text-align:justify;">En el caso del ejemplo, se utilizan las definiciones de sitio que proporciona Microsoft, pero del mismo modo se puede utilizar con las definiciones que creemos, y de ésta forma, podremos crear la estructura que necesitemos empleando nuestras definiciones de sitio.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/247/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/247/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/247/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=247&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/25/estructura-de-sitios-utilizando-portalprovissioningprovider/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>

		<media:content url="http://ccanov.files.wordpress.com/2009/11/estructura_thumb.jpg" medium="image">
			<media:title type="html">Estructura</media:title>
		</media:content>
	</item>
		<item>
		<title>Compatibilidad CSS con Internet Explorer</title>
		<link>http://ccanov.wordpress.com/2009/11/12/compatibilidad-css-con-internet-explorer/</link>
		<comments>http://ccanov.wordpress.com/2009/11/12/compatibilidad-css-con-internet-explorer/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 07:35:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/2009/11/12/compatibilidad-css-con-internet-explorer/</guid>
		<description><![CDATA[Acabo de encontrar una página en la que se muestra detalladamente que atributos CSS son aceptados por cada versión de los IE. En muchas ocasiones, todas las personalizaciones o desarrollos web que hacemos, tienen que ser compatibles con varios navegadores y por supuesto, no todos (IE) renderizan igual los estilos, de modo en esta página [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=225&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Acabo de encontrar una página en la que se muestra detalladamente que atributos <em>CSS</em> son aceptados por cada versión de los IE. En muchas ocasiones, todas las personalizaciones o desarrollos web que hacemos, tienen que ser compatibles con varios navegadores y por supuesto, no todos (IE) renderizan igual los estilos, de modo en esta página podremos ver como adaptar nuestra hoja de estilos para que se vea bien en Internet Explorer.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx" target="_blank">Compatibilidad CSS con IE</a></p>
<p style="text-align:justify;">Además existe otras páginas donde nos explican como poner estilos para que únicamente los entienda Internet Explorer.</p>
<p><a href="http://www.desarrolloweb.com/articulos/hack-css-ie.html" target="_blank">Desarrollo web &#8211; Estilos para IE</a></p>
<p><a href="http://www.desarrolloweb.com/articulos/hacks-css.html" target="_blank">Desarrollo web &#8211; Estilos</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/225/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=225&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/12/compatibilidad-css-con-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
		<item>
		<title>Problemas con eventos en MOSS/WSS</title>
		<link>http://ccanov.wordpress.com/2009/11/05/problemas-con-eventos-en-mosswss/</link>
		<comments>http://ccanov.wordpress.com/2009/11/05/problemas-con-eventos-en-mosswss/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 07:56:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[WebParts]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/?p=214</guid>
		<description><![CDATA[En algunas ocasiones, necesitamos generar un fichero (por ejemplo, zip con adjuntos de elementos de las listas, un pdf…)  cuando se pulsa un botón. En mi caso, se trataba de obtener un fichero comprimido con los adjuntos de los elementos que se muestran como resultado de la búsqueda, para una única página. Realice múltiples pruebas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=214&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">En algunas ocasiones, necesitamos generar un fichero (por ejemplo, zip con adjuntos de elementos de las listas, un pdf…)  cuando se pulsa un botón. En mi caso, se trataba de obtener un fichero comprimido con los adjuntos de los elementos que se muestran como resultado de la búsqueda, para una única página. Realice múltiples pruebas y siempre funcionaba todo correctamente hasta que añadí el webpart a SharePoint. En ese momento, comenzó a suceder una cosas muy rara: únicamente podía pulsar una vez el botón. Cuando me devolvía el fichero, el resto de la página no respondía a los eventos. Realice pruebas de nuevo con el mismo webpart fuera de SharePoint y todo funcionaba correctamente.</p>
<p style="text-align:justify;">Este problema se debe a que cuando se envía el formulario, se llama a la función <em><strong>WebForm_OnSubmit</strong></em> y desde ahí a la función <strong><em>_spFormOnSubmitWrapper</em></strong> (en el <em>init.js</em>).  Precisamente en ésta función se verifica si la variable <strong>_spFormOnSubmit</strong> se ha puesto a true, y en ese caso, se cancelan las peticiones de envió. Imagino que este mecanismo evita que se produzcan múltiples envíos del formulario ante un doble click del usuario.</p>
<p>La solución consta de dos pasos:</p>
<p><span id="more-214"></span></p>
<ul>
<li>
<div>Asignar en el evento del botón (en el lado del cliente) a: </div>
</li>
</ul>
<p><pre class="brush: csharp;">exportRequested=true;</pre></p>
<ul>
<li>
<div>Añadir las siguientes líneas en el evento de carga (page_load) del control de usuario/pagina/webpart</div>
</li>
</ul>
<p><pre class="brush: csharp;">

string beforeSubmitJS = &amp;quot;var exportRequested = false; &amp;quot;;
beforeSubmitJS += &amp;quot;var beforeFormSubmitFunction = theForm.onsubmit;&amp;quot;;
beforeSubmitJS += &amp;quot;theForm.onsubmit = function(){ &amp;quot;;
beforeSubmitJS += &amp;quot;var returnVal = beforeFormSubmitFunction();&amp;quot;;
beforeSubmitJS += &amp;quot;if(exportRequested == returnVal){_spFormOnSubmitCalled=false; exportRequested=false;}&amp;quot;;
//beforeSubmitJS += &amp;quot;alert(returnVal + '\\n' +_spFormOnSubmitCalled);&amp;quot;;
beforeSubmitJS += &amp;quot;return returnVal;&amp;quot;;
beforeSubmitJS += &amp;quot;};&amp;quot;;
//beforeSubmitJS += &amp;quot;alert(theForm.onsubmit);&amp;quot;;
this.Page.ClientScript.RegisterStartupScript(this.GetType(),&amp;quot;alterFormSubmitEvent&amp;quot;, beforeSubmitJS, true);
</pre></p>
<p>Espero que os ayude.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=214&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/05/problemas-con-eventos-en-mosswss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
		<item>
		<title>Micrososft Rampup</title>
		<link>http://ccanov.wordpress.com/2009/11/04/micrososft-rampup/</link>
		<comments>http://ccanov.wordpress.com/2009/11/04/micrososft-rampup/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 22:00:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Formación Microsoft]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/2009/11/04/micrososft-rampup/</guid>
		<description><![CDATA[Hoy he descubierto la comunidad online gratuira Microsoft Rampup. En esta ocasión se trata de un sistema similar a los comentados en entradas anteriores Desarrollador 5 estrellas y Micrososft Virtual Academy. Creo que en esta ocasión, esta nueva comunidad es más acertadas que las citadas con anterioridad, debido a que se presenta la información de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=208&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify"><a href="http://ccanov.files.wordpress.com/2009/11/bb352986_ru_logoenusmsdn_10.gif"><img style="border-bottom:0;border-left:0;display:inline;margin-left:0;border-top:0;margin-right:0;border-right:0;" title="bb352986_RU_logo(en-us,MSDN_10)" border="0" alt="bb352986_RU_logo(en-us,MSDN_10)" align="right" src="http://ccanov.files.wordpress.com/2009/11/bb352986_ru_logoenusmsdn_10_thumb.gif?w=240&#038;h=69" width="240" height="69" /></a> Hoy he descubierto la comunidad online gratuira <strong>Microsoft Rampup</strong>. En esta ocasión se trata de un sistema similar a los comentados en entradas anteriores <a href="http://ccanov.wordpress.com/2009/01/06/desarrollador-5-estrallas/" target="_blank">Desarrollador 5 estrellas</a> y <a href="http://ccanov.wordpress.com/2009/01/06/microsoft-virtual-academy/" target="_blank">Micrososft Virtual Academy</a>. Creo que en esta ocasión, esta nueva comunidad es más acertadas que las citadas con anterioridad, debido a que se presenta la información de forma más organizada, y sobre todo, porque la documentación proporcionada es bastante precisa. <strong>Microsoft RampUp</strong> consta de los siguientes “cursos”:</p>
<ul>
<li><em> Move from ASP to ASP.Net: </em>proporciona una visión general de ASP.Net para desarrolladores de ASP.</li>
<li><em>Learn ASP.Net for PHP developers:</em> proporciona una visión general de ASP.Net para desarrolladores PHP:</li>
<li><em>Web Development with ASP.Net</em>: proporciona una introducción al desarrollo web con ASP.Net.</li>
<li><em>Develop Windows Mobile 6 applications</em>: proporciona una introducción al desarrollo de aplicaciones para móviles</li>
<li><em>SharePoint for Developers</em>: proporciona una visión general de cómo&#160; desarrollar para MOSS. Trata temas como webparts, listas, event handlers, workflows, servicios web…</li>
</ul>
<p>Bueno, todo esto y mucho más en <a href="http://msdn.microsoft.com/es-es/rampup/" target="_blank">Microsoft Rampup</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=208&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/04/micrososft-rampup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>

		<media:content url="http://ccanov.files.wordpress.com/2009/11/bb352986_ru_logoenusmsdn_10_thumb.gif" medium="image">
			<media:title type="html">bb352986_RU_logo(en-us,MSDN_10)</media:title>
		</media:content>
	</item>
		<item>
		<title>Impersonación</title>
		<link>http://ccanov.wordpress.com/2009/11/04/impersonacin/</link>
		<comments>http://ccanov.wordpress.com/2009/11/04/impersonacin/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 13:12:04 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/?p=184</guid>
		<description><![CDATA[Debido al modelo de seguridad de MOSS/WSS y a las personalizaciones que se realizan mediante el desarrollo de nuevos webparts, interfaces,.. podemos necesitar realizar operaciones que el usuario final no tiene permisos para realizar, por ejemplo, acceder al perfil de un usuario, agregar elementos a listas con un usuario lector, que cualquier usuario pueda activar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=184&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Debido al modelo de seguridad de MOSS/WSS y a las personalizaciones que se realizan mediante el desarrollo de nuevos webparts, interfaces,.. podemos necesitar realizar operaciones que el usuario final no tiene permisos para realizar, por ejemplo, acceder al perfil de un usuario, agregar elementos a listas con un usuario lector, que cualquier usuario pueda activar features desde un webpart… (aunque en la mayoría de los casos, suele tratarse de operaciones más complejas).</p>
<p>Esta tarea, era más compleja en SharePoint 2003, pero ahora gracias al nuevo modelo de objetos y los métodos que ofrecen, podemos realizar una impersonación mediante la cual podremos ejecutar código que realice acciones para las cuales el usuario actual no tiene permisos. El modelo de objetos proporciona dos formas de realizar esta tarea:</p>
<ul>
<li>
<div>Utilizando la cuenta del sistema: ejecutaremos el código con los permisos que tiene la cuenta del sistema en el sitio (FullMask), de modo que podremos realizar todas las acciones.</div>
</li>
<li>
<div>Utilizando los datos de otro usuario: ejecutaremos el código con los permisos que tiene la cuenta del usuario utilizado en el sitio.</div>
</li>
</ul>
<p>A continuación veremos que se realiza esta tarea y algunos aspectos a tener en cuenta.</p>
<p><span id="more-184"></span></p>
<p>En el primer caso, impersonar utilizando la cuenta del sistema, vamos a crear un nuevo elemento de una lista con un usuario lector. Para realizar la impersonación utilizamos el método <strong>RunWithElevatedPrivileges </strong>de la clase estática <strong>SPSecurity</strong>.</p>
<p><pre class="brush: csharp;">
SPSecurity.RunWithElevatedPrivileges(delegate()
{
 using (SPSite miSitio = new SPSite(&amp;amp;quot;http://urlServidor&amp;amp;quot;))
 {
  miSitio.AllowUnsafeUpdates = true;

  using (SPWeb miWeb = miSitio.OpenWeb())
  {
   miWeb.AllowUnsafeUpdates = true;
   SPList miLista = miWeb.Lists[&amp;amp;quot;Pruebas&amp;amp;quot;];
   SPListItem elemento = miLista.Items.Add();
   elemento[&amp;amp;quot;Title&amp;amp;quot;] = &amp;amp;quot;PRUEBA CON USUARIO LECTOR&amp;amp;quot;;
   elemento.Update();
   miweb.AllowUnsafeUpdates = false;
  }
  miSitio.AllowUnsafeUpdates = false;
 }
});
</pre></p>
<p>En el caso de querer utilizar otro usuario, se puede realizar la impersonación de forma similar:</p>
<p><pre class="brush: csharp;">
SPUser miUsuario = SPContext.Current.Web.AllUsers[&amp;amp;quot;miDominio\\ccanov&amp;amp;quot;];
SPSite sitioImpersonado = new SPSite(&amp;amp;quot;http://urlServidor&amp;amp;quot;, miUsuario.UserToken);
SPWeb webImpersonada = sitioImpersonado.OpenWeb();
</pre></p>
<p>En ambos casos, si se obtiene el usuario llamando al método <strong>CurrentUser</strong> del objeto SPWeb impersonado, se obtendrá el usuario con el que se ha impersonado, siendo en el primer “SHAREPOINT\\SYSTEM” y en el segundo “miDominio\\ccanov”, mientras que si se realiza la llamada al objeto del contexto SPContext.Current.Web.CurrentUser, el usuario será el que está accediendo realmente a la página.</p>
<p>Hay que realizar siempre el <strong>Dispose</strong> de los objetos que se han utilizado para la impersonación, ya sea mediante el uso de using (primer ejemplo) o mediante el uso del método Dispose (segundo ejemplo).</p>
<p>En el caso de tener que realizar modificaciones, ya sea de listas, elementos de listas, páginas,… hay que poner la propiedad <strong>AllowUnsafeUpdates</strong> a <span style="color:#408080;">true</span>, antes de realizar la acción, y ponerla a <span style="color:#408080;">false</span> después, para esto, es recomendable hacer uso de <strong>finally</strong> e introducir todo el código dentro de un try-catch, para evitar que esta propiedad se quede con el valor a true.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=184&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/04/impersonacin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
		<item>
		<title>SPUtility, la gran desconocida</title>
		<link>http://ccanov.wordpress.com/2009/11/04/sputility-la-gran-desconocida/</link>
		<comments>http://ccanov.wordpress.com/2009/11/04/sputility-la-gran-desconocida/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 07:10:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/2009/11/04/sputility-la-gran-desconocida/</guid>
		<description><![CDATA[Muchos somos los que desarrollamos soluciones para MOSS o WSS y en ocasiones, damos muchas vueltas para obtener información o realizar acciones que ya existen por defecto pero no lo sabemos. En esta entrada, vamos a ver algunas de las utilidades que proporciona la clase SPUtility, hay muchas más y en función de las necesidades [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=179&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Muchos somos los que desarrollamos soluciones para MOSS o WSS y en ocasiones, damos muchas vueltas para obtener información o realizar acciones que ya existen por defecto pero no lo sabemos. En esta entrada, vamos a ver algunas de las utilidades que proporciona la clase <strong>SPUtility</strong>, hay muchas más y en función de las necesidades de cada uno, tendrán o no sentido, pero en estas son algunas de las que he utilizado hasta la fecha.
<p>&nbsp;</p>
<p>Para hacer uso de esta clase, es necesario incluir la siguiente línea:
<p>&nbsp;</p>
<p><pre class="brush: csharp;">
using Microsoft.SharePoint.Utilities;
</pre></p>
<p><span id="more-179"></span>Antes de comentar algunos de los métodos que proporciona, destacar que una de las ventajas de esta clase, es que al tratarse de una clase estática, no necesitamos instanciarla, lo cual facilita el acceso desde cualquier parte de nuestro código. A continuación describo la utilidad y como utilizar algunos de los métodos de ésta clase:
<p>&nbsp;</p>
<ul>
<li>
<div><strong>EnsureSiteAdminAccess</strong>: éste método permite validar si el usuario actual es administrador del sitio al que accede. Existen otros métodos para validar esto, pero lo interesante es que en este caso, si no se trata del un usuario administrador, aparecerá la ventana de login tres veces, dando la opción al usuario a acceder con otra cuenta. En caso de que el usuario no tenga acceso, se le enviará a la página de acceso denegado. En el código del ejemplo, se utiliza un control de usuario que estará cargado en un webpart.</div>
</li>
</ul>
<p><pre class="brush: csharp;">
protected void Page_Load(object sender, EventArgs e)
{
    SPUtility.EnsureSiteAdminAccess(SPContext.Current.Web);
    //Resto del código
}

</pre></p>
<ul>
<li>
<div><strong>GetGenericSetupPath</strong>: ¿quién no ha necesitado alguna vez la famosa ruta hasta el directorio 12? Este método nos devuelve la ubicación del directorio de instalación, en la mayoría de los casos es c:\Program Files…\….\12 pero no queda demasiado bien dejar el código con estas ruta y si cambia necesitaremos realizar modificaciones. En el caso del ejemplo, obtenemos la ruta hasta la carpeta features.</div>
</li>
</ul>
<p><pre class="brush: csharp;">
string directorioFeature= SPUtility.GetGenericSetupPath(&amp;amp;quot;template\\features&amp;amp;quot;);
</pre></p>
<ul>
<li><strong>SendEmail</strong>: permite enviar correos electrónicos haciendo uso de las configuraciones de la granja.</li>
</ul>
<p><pre class="brush: csharp;">

string subject = &amp;amp;quot;Correo electronico de notificación de &amp;amp;quot; + SPContext.Current.Web.Title;
string body = &amp;amp;quot;El cuerpo del correo electronico a enviar&amp;amp;quot;;

SPUtility.SendEmail(SPContext.Current.Web, false, false, &amp;amp;quot;miemail@miemail.com&amp;amp;quot;, subject, body);

</pre></p>
<ul>
<li>
<div><strong>TransferToErrorPage y TransferToSuccessPage</strong>:permiten redirigir a las páginas por defecto de error o bien de operacón realizada con éxito.</div>
</li>
</ul>
<p>Evidentemente no son todos los métodos ya que la idea principal es ver como se pueden utilizar éstos métodos.
<p>&nbsp;</p>
<p>Finalmente, recomiendo que visitéis en el SDK los métodos y propiedades que proporciona ésta clase, aunque aviso que no todos están documentados.
<p>&nbsp;</p>
<p><a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.aspx" target="_blank">SDK Clase SPUtility</a>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=179&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/04/sputility-la-gran-desconocida/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
		<item>
		<title>Creación de Reglas de Rastreo Programáticamente</title>
		<link>http://ccanov.wordpress.com/2009/11/02/creacin-de-reglas-de-rastreo-programticamente/</link>
		<comments>http://ccanov.wordpress.com/2009/11/02/creacin-de-reglas-de-rastreo-programticamente/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 15:08:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Administración MOSS]]></category>
		<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[busqueda]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/?p=172</guid>
		<description><![CDATA[En la entrada anterior &#8220;&#8220;Reglas de Rastreo&#8221; vimos para que son y para que se utilizan las reglas de rastreo a la hora de configurar el motor de búsqueda. En muchas ocasiones, no se dispone de acceso físico a la administración central, o bien, por necesidades de la solución, necesitamos añadir/eliminar reglas de rastreo desde [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=172&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En la entrada anterior &#8220;<a href="http://ccanov.wordpress.com/2009/10/31/reglas-de-rastreo/" target="_blank">&#8220;Reglas de Rastreo&#8221;</a> vimos para que son y para que se utilizan las reglas de rastreo a la hora de configurar el motor de búsqueda. En muchas ocasiones, no se dispone de acceso físico a la administración central, o bien, por necesidades de la solución, necesitamos añadir/eliminar reglas de rastreo desde una feature. En ésta entrada vamos a ver como se pueden crear reglas de rastreo programáticamente.</p>
<p>En primer lugar es necesario añadir referencias a las siguientes librerías:</p>
<ul>
<li>Microsoft.SharePoint.dll</li>
<li>Microsoft.Office.Server.dll</li>
<li>Microsoft.Office.Server.Search.dll</li>
</ul>
<p>Y haremos uso de los siguientes Namespaces:</p>
<p><pre class="brush: csharp;">

using Microsoft.Office.Server;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;

</pre></p>
<p><span id="more-172"></span><br />
En primer lugar es necesario obtener los contextos del servidor y el proveedor de servicios compartidos mediante los cuales, tendremos acceso a las reglas de rasteo. Cabe destacar, que se debe reemplazar “ShareServices1” por el servidor de recursos compartidos correspondiente a vuestra instalación.</p>
<p><pre class="brush: csharp;">
//Obtenemos el provedor de servicios compartidos
ServerContext ContextoServidor = ServerContext.GetContext(&amp;amp;quot;SharedServices1&amp;amp;quot;);
SearchContext ContextoBusqueda = SearchContext.GetContext(ContextoServidor);
Content sspContent = new Content(ContextoBusqueda);

</pre></p>
<p>Una vez tenemos los elementos necesarios para acceder a las reglas de rastreo, se crea la regla:</p>
<p><pre class="brush: csharp;">

string regla = &amp;amp;quot;http://*/SiteCollectionImages/*&amp;amp;quot;;

//Comprobamos que la regla no existe
if (!sspContent.CrawlRules.Exists(regla))
{
CrawlRule crawlRule = null;

//Creamos la regla de inclusión
crawlRule = sspContent.CrawlRules.Create(CrawlRuleType.InclusionRule, regla);
//o bien, de exclusión
crawlRule = sspContent.CrawlRules.Create(CrawlRuleType.ExclusionRule, regla);

//Si queremos marcar el check en Seguir urls complejas
if (crawlRule != null)
crawlRule.FollowComplexUrls = true;

//Finalmente actualizamos la regla con las modificaciones creadas
if(crawlRule != null)
crawlRule.Update();
}
</pre></p>
<p>De esta forma, se pueden crear reglas de rastreo desde una característica, webpart o cualquier otro elemento, siempre y cuando el usuario que lo ejecute disponga de los permisos necesarios (aunque siempre estará disponible la impersonación o elevación de permisos).</p>
<p>En el caso de querer realizar modificaciones sobre reglas existentes o bien eliminar alguna de las reglas, el procedimiento es prácticamente el mismo.</p>
<p><pre class="brush: csharp;">

CrawlRule crawlRule2 = sspContent.CrawlRules[regla];
crawlRule2.Delete();

</pre></p>
<p>Dejo unos enlaces, donde podéis ampliar información:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.aspx" target="_blank">Mircosoft Office Server Namespace</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.administration.aspx" target="_blank">Microsoft Office Server Search Administrator Namespace</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.aspx" target="_blank">Microsoft SharePoint Namespace</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/172/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=172&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/02/creacin-de-reglas-de-rastreo-programticamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
		<item>
		<title>¿Está una página en modo de edición?</title>
		<link>http://ccanov.wordpress.com/2009/11/01/est-una-pgina-en-modo-de-edicin/</link>
		<comments>http://ccanov.wordpress.com/2009/11/01/est-una-pgina-en-modo-de-edicin/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 12:07:00 +0000</pubDate>
		<dc:creator>ccanov</dc:creator>
				<category><![CDATA[Desarrollo MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[codigo]]></category>

		<guid isPermaLink="false">http://ccanov.wordpress.com/2009/11/01/est-una-pgina-en-modo-de-edicin/</guid>
		<description><![CDATA[En muchas ocasiones me he preguntado si existe alguna forma de saber si una página esta en modo de edición o no, para personalizar el contenido que se muestra en cada uno de los modos. Navegando por internet, he encontrado como se hace, y la verdad es que es bastante simple. Se puede utilizar desde [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=158&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">En muchas ocasiones me he preguntado si existe alguna forma de saber si una página esta en modo de edición o no, para personalizar el contenido que se muestra en cada uno de los modos. Navegando por internet, he encontrado como se hace, y la verdad es que es bastante simple.</p>
<p> <span id="more-158"></span>
<p>Se puede utilizar desde una página o control de usuario en aspx, de modo que todo lo que esté dentro de la etiqueta sólo se mostrará si esta en el modo que se especifica en la propiedad.</p>
<p><font color="#408080">&lt;PublishingWebControls:EditModePanel runat=server id=&quot;idEditPanel&quot; PageDisplayMode=&quot;Display&quot;&gt; </font></p>
<p><font color="#408080">&lt;!- &#8211; Controles definidos en esta zona se muestran en modo visualización &#8211; -&gt;</font></p>
<p><font color="#408080">&lt;/PublishingWebControls:EditModePanel&gt;</font></p>
<p><font color="#408080"></font></p>
<p><font color="#408080">&lt;PublishingWebControls:EditModePanel runat=server id=&quot;idEditPanel1&quot; PageDisplayMode=&quot;Edit&quot;&gt;</font></p>
<p><font color="#408080">&lt;!- &#8211; Controles definidos en esta zona se muestran en modo edición- -&gt;</font></p>
<p><font color="#408080">&lt;/PublishingWebControls:EditModePanel&gt;</font></p>
<p>&#160;</p>
<p>Si se necesita realizar la comprobación mediante código fuente:</p>
<p><font color="#408080">if( SPContext.Current.FormContext.FormMode == SPControlMode.Edit)</font></p>
<p align="justify">&#160;</p>
<p align="justify">Cabe destacar que en el caso de los webparts, será necesarios utilizar la propiedad de WebPartManager.DisplayMode</p>
<p>Dejo unos enlaces para ampliar la información.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpartmanager.displaymode.aspx" target="_blank">WebPartManager.DisplayMode Property</a></p>
<p><a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spcontrolmode.aspx" target="_blank">SPControlMode Enumeration</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ccanov.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ccanov.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ccanov.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ccanov.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ccanov.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ccanov.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ccanov.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ccanov.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ccanov.wordpress.com&amp;blog=5009578&amp;post=158&amp;subd=ccanov&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ccanov.wordpress.com/2009/11/01/est-una-pgina-en-modo-de-edicin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804dc37a175f7684470324ba5eba168a?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ccanov</media:title>
		</media:content>
	</item>
	</channel>
</rss>
