SharePoint Latin Rotating Header Image

2435

Facilitando el descubrimiento con SEO Toolkit

Para todos aquellos que construimos soluciones para Internet es necesario contemplar como agregar metadatos a nuestras páginas para que buscadores o servicios de búsqueda permitan encontrarlas, indexarlas y potencialmente arrojarlas como resultados.

Sin embargo, no solamente llenar de metadatos los encabezados de nuestras páginas es suficiente para permitir a servicios de búsqueda encontrar y rastrear el contenido. Es necesario asegurar que nuestro sitio web cuenta con enlaces propiamente vinculados a otros sitios, contenido ligero y accesible, código HTML bien formado que cumple con los estándares, entre otros elementos y referencias importantes de revisar.

SEO Toolkit es una herramienta que nos permite optimizar nuestros sitios web para un mejor decrubrimiento por parte de servicios y motores de busqueda. SEO Toolkit analiza nuestros sitios y recomienda posibles mejoras que podemos realizar y así facilitar a los servicios de búsqueda el encontrar nuestro contenido. Podríamos pensar que SEO Toolkit es un agente analizador que identifica como optimizar nuestros sitios para facilitar su descubrimiento en internet.

Esta es una herramienta de Microsoft por lo tanto se instala sobre IIS 7.0 y hace uso de SQL Server 2008 para recopilar y almacenar el resultado de los análisis. Así mismo este componente se integra a IIS 7 y permite acceder a reportes, reglas, validaciones y sugerencias para mejorar nuestro portal.

SNAGHTML371585e

Cuando creamos un nuevo análisis podemos configurar el sitio que queremos analizar, el número de enlaces que deseamos revisar, la autentificación que se deberá soportar y todo lo necesario para que la herramienta desempeñe una revisión de forma adecuada.

Los resultados obtenidos son muy valiosos ya que nos carga validaciones e incumplimientos que se realizaron. Por cada incumplimiento nos da un alto nivel de detalle entre ello la posible solución. Por fin ya no tendremos que recurrir a otras herramientas de análisis de sitios web.

SNAGHTML3717495

Ya hacia falta una herramienta tan valiosa como esta, que bien que Microsoft identificó el hueco y nos proporciono una alternativa aceptable. Estoy seguro que SEO Toolkit aportará mucho valor para tus proyectos web.

Dejo el enlace del sitio para que proceda a evaluar e instalar.

image

HG

Usando los controles de SharePoint en WebParts

Sin duda, con el poder viene la responsabilidad. En pasados días publiqué un post acerca de cómo utilizar los controles de ASP.NET y toda su experiencia gloria dentro de WebParts de SharePoint. Sin embargo, al utilizar esta estrategia un conjunto de consideraciones subsecuentes deberán ser contempladas como hacer uso de los mismos controles SharePoint dentro de estos WebParts.


En ese sentido, debido a que sin problema alguno puedo utilizar el GridView y/o cualquier control ASP.NET al principio suena atractiva la posibilidad pero como siempre la realidad se asoma y nos muestra al que un día fue novedoso control Calendar de ASP.NET y con todo el debido respeto, hoy no es la mejor opción para la captura de una fecha dentro de una forma en SharePoint, al menos la mejor opción es usar el mismo control que se usa en SharePoint, ¿estás de acuerdo?


Vamos a nuestro Web User Control y registramos los controles web de SharePoint. Estos son los controles mejorados que SharePoint internamente utiliza en su capa de presentación.


image


Después dentro de nuestro código Markup agregamos el control SharePoint que requerimos:


image


Lo interesante es que tenemos una gama de controles de SharePoint disponibles.


image


A continuación dentro del código hacemos referencia al control de SharePoint para poder adjuntar algún evento o leer su valor.


image


Y el resultado es:


image


Estos controles cuentan con validaciones, propiedades y eventos que podemos utilizar a nuestro favor. Créditos a Luis Edmundo Teos por el reto y escenario.


Suerte!

Programación ASP.NET en WebParts de SharePoint

Si eres un de desarrollador ASP.NET que se está iniciando en desarrollo SharePoint este ejemplo puede ser de utilidad. Básicamente, usaremos un enfoque de desarrollo de WebParts basado en el uso de Web User Controls de ASP.NET 2.0.

Antes que nada utilizaremos las siguientes herramientas:

Dentro de nuestro servidor de desarrollo SharePoint cargamos Visual Studio 2008 y elegimos la creación de un proyecto SharePoint en blanco, este proyecto lo nombraremos ASPNETWebPart.

clip_image002

Especificaremos que el nivel de confianza de esta solución SharePoint sea Full Trust y la razón es que usaremos un método Page.LoadControl que requiere de permisos elevados para ejecutarse, me parece que la razón es porque este método lee de la ruta de archivos SharePoint “12 hive” y para ello requiere que el proceso w3wpg.exe solicite los permisos necesarios.

clip_image004

Usando la solución generada por Visual Studio 2008 dentro del Solution Explorer agregamos un nuevo Empty Web Site de ASP.NET llamado ASPNETWebPArtsWebSite ubicándolo en la misma carpeta creada por nuestro proyecto anterior.

clip_image006

Dentro de nuestro proyecto ASPNETWebPartWebSite agregamos un Web User Control llamado ASPNETWebUserControl y es muy importante que no deseleccionemos el cuadro de verificación Place Code in separate file.

clip_image008

Esto nos crea un simple archivo con extensión .ascx dentro de nuestro proyecto ASP.NET. A estas alturas podremos realizar cualquier funcionalidad ASP.NET. Solo hay que asegurarnos de no generar dependencias a otras carpetas como App_Code, tratemos de generar todo el código y funcionalidad sobre el Web User Control. En mi caso usare las características de vinculación de controles de ASP.NET para crear el más humilde de los GridView de ASP.NET. Podemos crear una página Defaullt.aspx para probar el funcionamiento del mismo. A continuación agregare un cuadro de texto , un botón y un label.

clip_image010

El resultado es un código Markup que podría tener sin duda código C#. En la sección de Script runat=”Server” estarían los eventos disparados por los controles de nuestro Web User Control. Solo que para propósitos de este ejemplo quiero hacer que los eventos sean disparados desde un WebPart de SharePoint y no necesariamente desde aquí.

A continuación en nuestro proyecto SharePoint agregamos un elemento de tipo Template, el cual nos creara un archivo dentro de la ruta interna de archivos de SharePoint o más conocida como 12 hive “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\”.

clip_image012

Eliminamos el archivo generado TemplateFile.txt y agregamos la carpeta CONTROLTEMPLATES y dentro la carpeta ASPNETWebParts. Esto permite incluir en nuesdttro paquete de deployment generado por nuestro proyecto SharePoint una nueva carpeta que será aprovisionada de forma confiable en la ruta 12 hive de cada Web Front End de la granja SharePoint. Agregara una nueva carpeta llamada ASPNETWebParts. Dentro de esta carpeta agregaremos como elemento existente nuestro archivo .ascx. El resultado es algo asi:

clip_image014

Ya casi terminamos, a continuación agregamos el código de un WebPart de SharePoint que nos permitirá cargar en tiempo de ejecución el .ascx recién desarrollado. Dentro de nuestro proyecto ASPNETWebPart damos clic derecho y agregamos un nuevo elemento de tipo Web Part bajo el nombre ASPNETWebPart. En realidad puede ser cualquier nombre.

clip_image016

Abrimos el código de nuestro WebPart y agregaremos lo siguiente:

  1. Una variable miembro de tipo UserControl, esta se utilizara como un placeholder de todo el ASPNETWebUserControl.ascx.
  2. Sobre escribimos el método Render para escribir en el flujo de salida de nuestro WebPart el contenido del WebUserControl.
  3. Múltiples variables miembro que representan cada uno de los controles que existen en nuestro archivo ASPNETWebUserControl.ascx
  4. En el evento CreateChaldControls hacemos una instancia de UserControl mediante Page.LoadControl y de cada uno de los controles;

Básicamente podremos tener el control de la funcionalidad desde el WebPart y esto facilita el hacer uso del modelo de objetos de SharePoint para leer datos de otras listas o hacer querys que podamos usar para después presentarlos en el Web User Control.

using System;

using System.Runtime.InteropServices;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Serialization;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.WebPartPages;

namespace ASPNETWebPart

{

[Guid("7625d718-fb33-4bbc-b05f-2f1ff0dd4a88")]

public class ASPNETWebPart : System.Web.UI.WebControls.WebParts.WebPart

{

public ASPNETWebPart()

{

this.ExportMode = WebPartExportMode.All;

}

protected override void Render(HtmlTextWriter writer)

{

this.ascxControl.RenderControl(writer);

}

UserControl ascxControl;

Button button1;

TextBox textbox1;

Label label1;

GridView gridView1;

protected override void CreateChildControls()

{

base.CreateChildControls();

ascxControl = (UserControl)Page.LoadControl(@"/_controltemplates/ASPNETWebParts/ASPNETWebUserControl.ascx");

button1 = (Button)this.ascxControl.FindControl("Button1");

textbox1 = (TextBox)this.ascxControl.FindControl("TextBox1");

label1 = (Label)this.ascxControl.FindControl("Label1");

gridView1 = (GridView)this.ascxControl.FindControl("GridView1");

button1.Click += new EventHandler(button1_Click);

this.Controls.Add(ascxControl);

}

void button1_Click(object sender, EventArgs e)

{

label1.Text = textbox1.Text;

}

}

}

El resultado:

clip_image018

Como validar campos en formularios de listas personalizadas de SharePoint con SharePoint Designer

Lo único que puedo decir es que aquellos pequeños y finos detalles dejan un sabor mucho más agradable a la experiencia.

Durante un pasado servicio de soporte se solicitó un requerimiento de validar que el campo fecha de una lista personalizada, no permitiera ingresar fechas mayores o iguales al día de hoy. Sin duda, de primera mano y como todo un programador piensas en construir un Custom Field que contenga la funcionalidad solicitada, sin embargo, todas las implicaciones y costo de desarrollar, probar, implementar y mantener una funcionalidad como tal no se justifica como para esta necesidad solicitada y el sentido de urgencia.

El folclórico y temperamental SharePoint Desginer 2007 a.k.a “SPD” hace su aparición como una alternativa para realizar la validación solicitada.

Básicamente la solución será:

  1. Copiar y pegar la página NewForm.aspx de la lista en cuestión con el nombre de NewFormEnhancement.aspx
  2. Abrir la página y poner invisible el primer WebPart
  3. Agregar un Custom List Form de tipo New para la lista en cuestión
  4. Agregar validadores a field donde requerimos la funcionalidad

1. Copiar y pegar la página NewForm.aspx de la lista en cuestión con el nombre de NewFormEnhanced.aspx image

  • Cargamos el sitio en cuestión usando SPD, asegúrate de firmarte al sitio en cuestión  con una cuenta que por lo menos el permiso de Site Collection owner.
  • Cuando cargas el sitio podrás ver en forma de árbol el contenido.
  • Expande la carpeta Lists y de los elementos mostrados expandes la lista que deseas personalizar. Observa que se tienen un conjunto de archivos .aspx, selecciona NewForm.aspx y da clic derecho, copia la página y ahí mismo pegas con el nombre de NewFormEnhancements.aspx

2. image Abrir la página y poner invisible el primer WebPart

  • Das doble clic sobre NewFormEnhanced.aspx. SPD carga la página para poder ser editada.
  • Da clic sobre el único WebPart en la página y da clic derecho para elegir la opción de WebPart Properties. WebPart Properties carga el panel de propiedades correspondiente.
  • Expande la sección de Layout y da clic sobre el cuadro de verificación Hidden. Esto hace que en la página en cuestión el WebPart pre determinado no este visible.

3. Agregar un Custom List Form de tipo New para la lista en cuestión

  • imageEn el código Markup de la página en cuestión buscamos el lugar donde se encuentra  </WebPartPages:
    ListFormWebPart>
    </ZoneTemplate>
    </WebPartPages:
    WebPartZone>
    y justo debajo posicionamos nuestro cursor.
  • Seleccionamos del menú Insert la opción SharePoint Controls y Custom List Form. Esto carga una ventana de dialogo que nos permite seleccionar el tipo de WebPart que deseamos insertar sobre nuestra página personalizada.
  • image Configuramos el tipo de forma de captura que será aprovisionado por esta ventana de dialogo. Básicamente elegimos la lista de la cual necesitamos una instancia del formulario de captura y muy importante es el tipo de formulario de captura que requerimos como la forma de nuevo elemento, forma de modificación de un elemento o forma de visualización de un elemento. Elegimos New Item form, damos clic en Ok y esto genera una nueva instancia de la forma de captura para nuevos elementos de la lista que elegimos. Esta forma de captura es aprovisionada en código Markup de tipo WebPartPages:DataFormWebPart el cual expone los fields que el formulario tiene y el layout HTML donde estos fields son ubicados en la forma, esto nos da grandes posibilidades de personalización visual.

4. Agregar validadores a field donde requerimos la funcionalidad

  • image Buscamos el field de tipo fecha que deseamos validar.
  • Nos aseguramos de modificar el tipo de control que se tiene configurado. Simplemente seleccionamos el control en cuestión y damos clic derecho sobre él, elegimos la opción de Show common control task cargando con ello una sección donde podemos elegir el tipo de control. Como podemos ver seguramente tenemos la opción de Form Field como Format As, damos clic sobre el cuadro de selección y elegimos Date Picker. Esto hace una especie de cambio en el control.
  • Damos clic derecho Properties sobre el control y buscamos la propiedad ID en mi caso fue “ff6_1”. Este ID es muy importante ya que con el podremos asociarlos a otros controles del lado servidor como TextBox, Validation Controls,. etc. Lo único importante que se debe de contemplar es que cuando utilizamos los controles de ASP.NET o nativos de SharePoint, estos hacen referencia al control no con el ID como tal, sino con el siguiente patrón “ID$IDTipoDeDato” en otras palabras “ff6_1$ ff6_1Date”.
  • Dentro del código Markup buscamos la terminación de la declaración del control Date Picker “</SharePoint:DateTimeControl>” y justo abajo pegamos el siguiente código:

<SharePoint:InputFormCustomValidator

ClientValidationFunction="IsValidDate"

ID="custvDueDate"

runat="server"

Display="Dynamic"

SetFocusOnError="false"

ControlToValidate="ff6_1$ff6_1Date"

BreakBefore="true"

BreakAfter="false"

ErrorMessage="Date must be grater than today" />

Como se puede observar, tenemos controles del lado servidor específicos de SharePoint. Estos controles heredan de los controles de validación de ASP.NET y agregan otro comportamiento adicional muy similar a los de ASP.NET pero especial para SharePoint. Mediante las directivas pre definidas en la página podemos acceder a ellos.  Karine Bosch explica aquí cada uno de estos controles y lo hace muy bien. Favor de ver este post antes de continuar.

En el caso de InputFormCustomValidator lo estamos usando para realizar una validación sobre el field Due Date. Recuerda que la regla es NO permitir la captura de fechas mayores o iguales al dia de hoy. El control de validación custom InputFormCustomValidator  nos permite asignar código compilado .NET para realizar la validación en cuestión, solo que bajo el contexto de ejecución de SharePoint se requeriría hacer algunas modificaciones en el web.config para permitir la compilación de la página, sin embargo, este control nos permite hacer lo mismo utilizando código del lado del cliente. Y justo ese es el escenario que pienso compartir aquí.

Básicamente estamos confiando en realizar la validación desde el navegador de internet utilizando Javascript. Como ven, la propiedad ClientValidationFunction apunta a una función Javascript “IsValidDate” encargada de realizar la validación personalizada y este código javascript deberá de estar referenciado o registrado en la página en cuestión y lo hacemos agregandolo dentro de un Content Place Holder especial. Cuando el usuario capture una fecha sobre el control, este dispara el uso de la función javascript para validar la información capturada, la funcion javascript recibe en sus argumentos el source y args, en otras palabras el objeto que lo dispara y algunos argumentos del objeto como el valor que contiene. Cuando args.IsValid es igual a true significa que la validacion es correcta y por lo tanto hace que el control InputFormCustomValidator no muestre el mensaje de error. Cuando es false, hace lo contrario.

Este código javascipt lo podemos agregar justo al inicio de la página después de la declaración de las directivas:

<asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server">

<script language="javascript" type="text/javascript">

function IsValidDate(source, args)

{

var today = new Date(new Date().setHours(0,0,0,0));

var arrayDate = args.Value.split("/");

var controlDate = new Date(arrayDate[2], arrayDate[0]-1, arrayDate[1]);

args.IsValid =( today<controlDate);

}

</script>

</asp:Content>

Como podemos ver utilizamos un Content Place Holder que no propiamente estaba declarado dentro de la página y adentro agregamos el javascript de la función IsValidDate el cual recibe como argumento el dato que se desea validar. Con funcionalidad javascript se generan variables de tipo date para gestionar la comparación.

El resultado:

image

No olvides dar check in a la pagina para poder probarla. Para terminar, asegurate de especificar en las propiedades de la lista en cuestion tu nueva pagina como la pagina principal para agregar elementos en la lista. Con esto cuando un usuario de clic en New dentro de la lista, SharePoint carge la nueva pagina personalizada.

  • En SPD, das clic derecho sobre la lista en cuestion.
  • Seleccionas Properties.
  • Seleccionas la pestaña Supporting Files y en new item from buscas la nueva pagina creada.

image

Credito a Hector Mata por el codigo javascript, gracias!

Configurando acceso anónimo y restringido a una Extranet de SharePoint 2007 en 30 minutos

ahorrar_en_proveedores_articulo_portraitContinuando con el tema de la Intranet-Extranet configurada aquí, me di a la tarea de acércame al siguiente reto una vez que enfrentamos un escenario de extranet. Este reto consiste en ofrecer a los usuarios externos algún mecanismo de registro y de gestión de perfiles. En este video vemos como configurar el acceso anónimo en la zona de Extranet, vemos como utilizando SharePoint Designer 2007 podemos personalizar páginas que hagan uso de controles de servidor de ASP.NET 2.0 y de WebParts de SharePoint.


Adicional vemos como romper con la herencia de permisos para poder contar con porciones de contenido privadas y públicas. Las públicas, son páginas de registro y de inicio de sesión, las privadas son páginas restringidas que muestran mediante WebParts listas personalizadas configuradas especialmente.


Dicho lo anterior, esto permite ofrecer un mecanismo para restringir el acceso a ciertas listas y solo hasta que el usuario se registre, alguien con permisos elevados desde la Intranet otorgue el rol “Extranet” al usuario en cuestión (esto permite contar con un proceso de validación del usuario antes de darle acceso a cualquier contenido restringido) este podría acceder a subir la información requerida.


Adicional, vemos como configurar una lista personalizada de SharePoint para que la información que el usuario externo aporte sea visible solo para él y para cualquier usuario de la Intranet, permitiendo con esto aplicar algunas otras funcionalidades de SharePoint para colaboración o seguimiento interno por parte de empleados de la organización.


El ejemplo se basa en un escenario de extranet para proveedores donde estos pueden subir documentación e información de negocio que permita a la empresa iniciar con los trámites necesarios para darlo de alta como proveedor. Adicional, este ejemplo podría utilizarse como un mecanismo para concurso de RFPs o para recopilación de información provista por actores externos a la empresa pero que participan en la cadena de valor.


Espero sea de utilidad, está por demás decir que este es un ejemplo de tan solo 30 minutos que ilustra conceptos y aspectos tecnológicos que pudiesen acercarse a una solución.


 



 


Utilizar estos consejos es bajo tu propio riesgo, explora, aprende y comparte!.


HG

Intranet-extranet de SharePoint en 40 minutos

En las últimas semanas colegas programadores que no conocen SharePoint 2007 se acercan para preguntar y evaluar si SharePoint puede dar una solución aceptable para escenarios donde usuarios externos (fuera del directorio activo) a la organización colaboren con usuarios internos (dentro del directorio activo) en algún proceso de negocio relevante para la organización.


Afortunadamente SharePoint 2007 fue construido utilizando .NET Framework 2.0/3.0 y sobre ASP.NET 2.0 por lo tanto las características que cualquier programador ASP.NET 2.0 conoce prácticamente las tenemos disponibles en SharePoint 2007, aunque esto no necesariamente aplica para la experiencia de desarrollo Sad smile.


Dicho lo anterior, tuve un par de reuniones explicando como sí SharePoint 2007 podría habilitar el escenario mencionado, sin embargo, por más que lo explico y lo justifico, no hay mejor opción que demostrarlo. Es por eso que me di a la tarea de grabar un video de cómo configurar una Intranet que hace uso de directorio activo como su fuente de credenciales de usuario y Extranet que hace uso Membership y Role Providers de ASP.NET 2.0 para gestionar usuarios en bases de datos SQL utilizando las características de Form Base Authentication. En el proceso podran visualizar como la Herramienta Central de Administracion de SharePoint aprovisiona base de datos de contenido, web sites de IIS y application pool. Smile



NOTA: Es muy importante mencionar que ninguna intranet-extranet que se utilice empresarialmente en escenarios de producción quedara configurada en 40 minutos, hay aspectos de planeación, configuración y seguridad que se deben de contemplar muy seriamente.


Y para terminar un poquito de arquitectura basica sobre un escenario en cuestion:


  • SPDB: Database Server
  • SPAPP: SharePoint Application Server
  • SPWFE1: Web Front End en Zona Intranet
  • SPWFE2: Web Front End en Zona Extranet
  • AD: Directorio Activo
  • EX: Exchange
  • ISA: ISA Server o firewall fisico

image


Como se refiere en la imagen, tenemos servicios dos zonas, Intranet y DMZ. Intranet hace uso de los recursos de red internos de la organización como directorio activo o servidor de correo electrónico, entre otro. En la misma zona interna tenemos una Topologia Small Farm de SharePoint con un solo Web Front End que usuarios internos podran acceder mediante http://intranet.splatin.com. En la zona DMZ tenemos otro Web Front End unido a la granja filtrado por un firewall hacia adentro y hacia afuera. Puede ser firewall de software como el caso de ISA Server o de hardware. Podriamos pensar que el Web Front End de la zona DMZ tenga 2 tarjetas de red, una para trafico externo con IP publica y dominio como http://extranet.splatin.com, y otra tarjeta para trafico interno con IP privada o de la red local. Aqui tenemos otras alternativas de configuración mas sofisticadas que el area de infraestructura seguramente podra aprovisionar. Usuario con acceso a internet llega al Web Front End de la zona DMZ pasando por el firewall.


Para ti que eres programador ASP.NET y estas evaluando SharePoint espero sea de utilidad este breve ejemplo acercamiento de solución.


HG

Configurando y trabajando con el idioma español del .NET Framework 4

Desde el punto de vista de programador cuando construimos una aplicación ASP.NET usando el motor de ejecución .NET Framework instalado en el idioma inglés, vemos que los mensajes auto generados por el motor de ejecución estan en inglés. Mensajes como las descripciones de los controles de validación, mensajes de un control de tipo LogIn, los títulos de las acciones de un GridView que soporta edición o eliminación, los títulos de los opciones de un control de tipo calendario e innumerables ejemplos más.


Control LogIn con la configuración predeterminada en ingles


image


Control GridView con la configuración predeterminada en ingles


image


Para resolver este tema de la auto generación de mensajes en el idioma que requerimos, necesitamos configurar las características de Globalización en el web.config y también necesitamos ejecutar la instalación del paquete de idioma del .NET Framework en español. Esta demás mencionar que podemos mejorar nuestra productividad respecto a la edición manual de tanto mensaje.


Lo que haremos es descargar el paquete de Idioma en español del .NET Framework, en este caso descargaremos el paquete de idioma en español del .NET Framework 4 de aquí. Ojo, este paquete no contiene los ensamblados o el motor de ejecución del .NET Framework sino más bien los mensajes en español de los controles, errores y elementos internos del motor de ejecución.


image


Toma las consideraciones pertinentes en caso de utilizar esta alternativa, ya que tendrás que llevarte a tus servidores de producción el mismo instalador de paquete de idioma que estés usando para continuar con estos beneficios.


Una vez que tengas instalado el paquete de idioma en español del .NET Framework 4.0, lo que falta es implementar la configuración a nivel Globalización y Localización. Globalización y localización en el contexto de.NET se refiere a especificar en nuestro aplicativo las características de idioma y manejo de datos de tipo moneda, calendarios y formatos de fecha correspondientes, esta configuración puede aplicarse en distintos niveles, a nivel global “toda la aplicación” o a nivel página “solo una página” o a nivel programático “comúnmente usado para cálculos monetarios o de fechas en ciertas porciones de nuestra aplicación”.


Vamos a configurar a nivel global la globalización de nuestra aplicación web. Accedemos al archivo web.config de nuestro aplicativo y agregamos la siguiente línea:


<globalization culture=”es-MX” uiCulture=”es-MX”/>


Esto sobre escribe cualquier configuración relacionada con el idioma en nuestra aplicación web especificando que usaremos las características del idioma español y en particular moneda en pesos. Por ejemplo si usamos es-ES también estaríamos usando idioma español solo que con moneda de en euros. También podemos usar la palabra auto dentro de estos atributos para especificar que la configuración de la localización provenga de las opciones de configuración del idioma establecidas en el navegador de internet del usuario que esté haciendo la petición a la aplicación.


Ahora sí, cualquier control con el que arrastremos sobre nuestro paginas ASP.NET en tiempo de ejecución tendrán su descripción totalmente en español.


Control LogIn con la configuración del idioma en español


image


Control GridView con la configuración del idioma en español


image


Suerte!

Explorando el uso de autentificación basada en formularios en SharePoint 2007

Autentificación basada en formularios es una propuesta decente para implementar el manejo de credenciales en aplicaciones .NET, no es la propuesta definitiva ya que no utiliza estándar alguna sin embargo si da soluciones para los escenarios propietarios de gestión de credenciales. En SharePoint 2010 se sigue soportando y justamente se ha implementado seguridad basada en demanda como la propuesta estandar. Siguendo con el tema, debido a que SharePoint 2007 fue construido sobre ASP.NET 2.0 el uso y configuración de Membership Providers es soportado permitiéndonos poder implementar diferentes mecanismos y escenarios de autentificación para hacer realidad nuestro requerimientos.

Si tienes la necesidad o el requerimiento de implementar o construir tu propia implementación de Membership Provider para usarla en SharePoint aquí dejo un articulo que me parece lo suficientemente completo para lograrlo.

Suerte con eso!

HG

Fundamentos web que no debemos olvidar

En ocasiones uno asume que los desarrolladores web conocen todos los fundamentos de la arquitectura de aplicación de esta naturaleza, especialmente los nuevos desarrolladores. Con la llegada de herramientas visuales como Visual Studio .NET 2002 o algunos otros el desarrollo web sin duda dio un giro dramático desde el punto de vista de productividad haciendo que el desarrollador logre construir aplicaciones web en un dos por tres, concentrándose solo en la necesidades de negocio más que en los aspectos técnicos. Objetos de terceros o nativos de ASP.NET como el Calendar, GridView, Details View, Panel, DropDownList, etc. tenemos disponible una gama rica de funcionalidad que desde el punto de vista programación podemos manipular desde el lado servidor para que este arroje el HTML requerido con el fin de obtener un comportamiento esperado en el lado cliente. Sin embargo, justamente por tener un intermediario que se ejecuta del lado servidor para generar código HTML que termina ejecutándose del lado cliente, en algún punto el tema de los estándares web se dieron por cumplido. Muchos terminamos confiando que la herramienta generadora  cumple con el estándar web. Hoy con la interoperabilidad multiplataforma, la evolución de los navegadores y la web como el medio los estándares web se reafirman más que nunca. No olvidemos que en este mundo todo es un trade off o intercambio balanceado entre tiempo, recursos y presupuesto, sin duda las herramientas nos ayudan a ser productivos pero a cambio de algo.

Como un instructor especializado en tecnologías Microsoft he tenido la oportunidad de capacitar a desarrolladores web ASP.NET que como muchos otros terminan confiando ciegamente en el cumplimiento del HTML generado por la herramienta y sus controles. Para mi sorpresa he conocido nuevos programadores que desconocen en su totalidad los conceptos de estándares web como XHTML y hojas de estilos CSS entre otros y no vendría nada mal enterarse de los fundamentos.

EstandaresWeb.com.mx es una comunidad abierta dedicada a divulgar y promover el uso de los estándares web en México. Como desarrolladores web ASP.NET u otras tecnologías no vendría nada mal darnos un paseo por este sitio para buscar entender cómo aplicar estándares en nuestros desarrollos.

Aqui dejo dos videos de Luis Hernandez donde nos explica los fundamentos de los estandares Web.

El contenido es el rey from Estándares Web MX on Vimeo.

Markup también es presentación from Estándares Web MX on Vimeo.

Desarrollo de WebParts de SharePoint 2010 con soporte AJAX

Microsoft no se cansa de dar el mensaje de que SharePoint 2010 es una plataforma de aplicación aparte de una plataforma de colaboración para la empresa y la web. Y el día de hoy quiero mostrar un breve y sencillo ejemplo de cómo construir un WebPart para SharePoint 2010 con soporte AJAX.

Visual Studio 2010 por fin cuenta con un nuevo ciudadano de funcionalidad, se cuenta con toda una sección y plantillas de proyectos solo para la plataforma SharePoint 2010 soportada de forma nativamente y permitiendo a los programadores curiosos que no le temen al cambio adentrarse al mundo de desarrollo de SharePoint.

Este video muestra lo simple que es construir e implementar un WebPart para SharePoint 2010 con características de AJAX. Cero líneas de código de configuración, arrastrar, soltar, doble clic y a programar es parte del paradigma con el que contamos en esta nueva versión.

Desde mi personal punto de vista no hay nada mejor que saber que sucede tras bambalinas sin embargo en este mundo donde la economía y las empresas constantemente cambian y por ende las herramientas que simplifican las cosas para solamente dedicarnos a lo que nos compete desde el punto de vista de negocio y no necesariamente a aquellas cosas de configuración que al negocio prácticamente le es indiferente.

Aqui el video con mas resolucion: