jueves, 28 de julio de 2011

Fast Search Center Template is Missing in SharePoint 2010

Les ha ocurrido que ya después de haber pasado penurias en desplegar Fast Search Server 2010 for SharePoint (FS4SP), configurar los services search applications (SSA) necesarios, y habilitar su comunicación por medio de la importación/exportación de certificados para que SharePoint se comunique con FS4SP… que después de todo este trabajo, vayan ilusos confiados a su Sitio Web a crear un nuevo sitio que utilice el template de Fast Search Center para proveer a los usuarios de la capacidad de búsquedas empresariales y que al intentar seleccionar este template del apartado de Search, este template no aparezca!?


Evidentemente, lo primero que se nos cruza por la mente es validar que las dos características a nivel de sitecollection requeridas estén activadas…. Y si, si están activadas

Ok, después de esta sucia broma del destino, lo que necesitamos hacer para que este template aparezca como opción al momento de crear un nuevo sitio es activar la característica de SearchExtensions, la cual es de tipo hidden y que pueden activar utilizando el pequeño scritp de powershell que a continuación muestro:
Enable-SPFeature –Id SearchExtensions –url http://sp2010/

miércoles, 8 de junio de 2011

[Tip] Agregar automáticamente los cmdlets de SharePoint a PowerShell ISE

Si a ustedes como a mi, les gusta usar Windows PowerShell ISE a la hora de escribir scripts PowerShell, principalmente,  aunque no únicamente, para SharePoint Server 2010, les mostraré un tip para evitar el uso del comando Add-PSSnapin para registrar los cmdlets de SharePoint cada vez que abrimos esta aplicación.

Antes que nada, si ustedes aún no usan Windows PowerShell ISE, lo recomiendo ampliamente por sus características de Debugging, si aún no lo usan porque no lo tienen activado, recuerden que Windows PowerShell ISE es instalado en Windows 2008/R2 por default, solo que no es activado, y esto se logra mediante la activación de la característica “Windows PowerShell Integrated Scripting Environment (ISE)”.

Una vez que ya lo han activado e iniciado, se darán cuenta que si intentan usar algún cmdlet de SharePoint, este no funciona y es porque no ha sido registrado el paquete de cmdlets de SharePoint, para esto usamos el cmdlet Add-PSSnapin Microsoft.SharePoint.PowerShell, ahora bien, volviendo a la intención original de este post, que es evitar escribir este comando cada vez que abrimos el Windows PowerShell ISE, podemos editar ó crear (en caso de no existir) una archivo de perfil de usuario, con el fin de que cada vez que abramos esta aplicación, este archivo de perfil de usuario se encargue de cargar todos los paquetes de cmdlets que hayamos indicado.

Existen cuatro diferentes ámbitos de perfiles en los cuales se puede crear este archivo, para mayor información revisen este link de technet, yo personalmente recomiendo que usen el que aplica a todos los usuarios y todos los shells, con esto se evitaran repetir esta acción entre diferentes usuarios y diferentes consolas de Shell, este archivo lo pueden referenciar a través de $profile.AllUsersAllHosts. A continuación los pasos que pueden usar para crear este archivo y agregar los paquetes de cmdlets que deben cargarse cada que se lanza la aplicación, en este ejemplo solo agrego el de SharePoint 2010.

Primero se debe abrir el archivo de perfil (profile.ps1) si existe de lo contrario crearlo, para esto se puede abrir directamente desde el file system o mediante un comando de PowerShell como se observa a continuación:


if (!(test-path $profile.AllUsersAllHosts))
{
    new-item -type file -path $profile.AllUsersAllHosts-force
}

Una vez que el archivo está abierto solo se debe agregar el siguiente código:
#se edita el archivo de perfil
psEdit $profile.AllUsersAllHosts
If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{ 
    Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell 
    #agregue aqui sus modulos favoritos!
}


Después guardar el archivo y listo, la siguiente vez que se lance la aplicación automáticamente se cargarán los módulos indicados.

Happy Coding!

lunes, 30 de mayo de 2011

[Tip] Convertir un Diagrama de Visio a un archivo .xap de Silverlight

Algunos lectores del blog me han comentado que aunque les parecen muy atractivos los resultados que se pueden obtener al personalizar un diagrama utilizando JavaScript, también me comentan que les parece muy complicado estar "buscando" objetos en el DOM, una vez que el diagrama ha sido dibujado.

Me explico, una vez que el diagrama ha sido rendereado, es entonces cuando podemos comenzar a interactuar con él, en términos de manipular los objetos (Silverlight principalmente), para esta manipulación casi siempre necesitamos saber el ID del control, para posteriormente modificar alguna de sus propiedades, inclusive para removerlo del diagrama. Importante es mencionar que estos ID's se autogeneran cuando el diagrama es transformado a .xap, por lo que no tenemos certeza de cuál es el nombre una vez generado.

Es entonces este proceso de "búsqueda" de ID's de los controles a modificar el que se vuelve un poco tedioso, luego entonces, el motivo de este post es mostrarles un workaround proceso alternativo con el que podemos tener acceso al archivo .XAP de un diagrama de Visio, lo cual nos permitirá ver la jerarquía de controles, sus respectivos ID's e inclusive los datos que son enviados al cliente (de esto hablaremos en un post siguiente).

Y lo único que tenemos que hacer es guardar el diagrama como página web y una vez que concluya el asistente, abrir la carpeta de archivos que genera y examinar los archivos .xaml que se encuentran dentro, puede haber tantos archivos .xaml como paginas tenga el diagrama, en mi ejemplo el diagrama contiene tres paginas.



Happy Coding!

jueves, 26 de mayo de 2011

Reseña Cuarto Simposio Latinoamericano de SharePoint 2011

Como muchos de ustedes saben, tuve el privilegio de ser invitado a participar como expositor con una charla en el pasado Cuarto Simposio Latinoamericano de SharePoint 2011, que se llevo acabo el 29 de Abril pasado en las instalaciones de Microsoft México.  En aquella ocasión, mi participación fue acerca de Visio Services en SharePoint 2010.

Dejo el link de la reseña oficial del evento, desde el sitio de la comunidad SharePoint de México.
También una reseña apócrifa realizada por mi buen amigo Haaron Gonzalez



La presentación la pueden descargar de aquí

Solo queda volver a agradecer a Luis Du Solier por la invitación y confianza.

domingo, 22 de mayo de 2011

Agregando controles Silverlight a un diagrama de Visio Services











Hasta el momento he omitido intencionalmente el mencionar uno de los hechos mas relevantes, y que tiene que ver con la forma en que el diagrama es dibujado (rendereado) en el navegador.

Existen dos únicas formas en las que el diagrama de Visio puede ser dibujado en el navegador, en formato Raster ó usando Silverlight!!!.

Así es, una de las tecnologías favoritas de este humilde desarrollador, vuelve a hacerse presente en un escenario en el que la interacción del usuario con el navegador es parte fundamental de la experiencia final de uso. Ahora bien, habrá quienes en este punto aún no tengan claro el porqué de mi exaltación por el uso de Silverlight para renderear el diagrama de Visio, es decir, si, todos ya sabíamos que Silverlight es usando ampliamente en varios aspectos de SharePoint 2010 porque esto brinda, sin lugar a dudas, una experiencia de usuario mejorada. Pero… volviendo a Visio Services… y qué más da que se use Silverlight para dibujar el diagrama en el navegador?

Pues el hecho relevante es, como todos sabemos, que Silverlight expone una API en JavaScript para la manipulación y creación de objetos desde el lado del cliente (JavaScript), puede sonar redundante puesto que Silverlight de por sí se ejecuta del lado del cliente (navegador). Ahora sí, las piezas comienzan a encajar en este rompecabezas.

La razón de este post es demostrar cómo podemos, mediante el uso de la API de Silverlight en JavaScript, agregar objetos al diagrama, una vez que ha sido dibujado en el navegador. Este es el punto medular, ya que con un poco de imaginación y algunas líneas de código (en su mayoría JavaScript) podemos crear diagramas muy atractivos al usuario final.

Dado que ha sido demasiado preámbulo, nada mejor que algunas líneas de código que ejemplifiquen mucho mejor de que estamos hablando.

Agregando objetos Silverlight(xaml) al diagrama

Tomando como base el diagrama del post anterior, vamos a modificar un poco el código que utilizamos para contar los shapes que existen dentro del diagrama para agregar los objetos Silverlight.

Sys.Application.add_load(onApplicationLoad)

//declaramos algunas variables globales que ocuparemos
var vwaControl;
var vwaPage;
var vwaShapes;
var vwaShapeCount;


function onApplicationLoad() {
    //obtenemos la instancia de la Visio Web Access Web Part
    getVwaControl();

    //Nos subscribimos a dos de los eventos que son expuesto por la API
    if (vwaControl != null) {
        vwaControl.addHandler("diagramcomplete", onDiagramComplete);
        vwaControl.addHandler("shapeselectionchanged", onShapeSelectionChanged);           
    }
    else {
        alert("Error connecting to Visio Web Part.  Please contact the site administrator.");
    }
}

function onDiagramComplete() {
 vwaPage = vwaControl.getActivePage();
    //obtenemos la pagina activa con el metodo getActivePage()
    vwaPage.setZoom(80);
 
 //buscamos el contenedor del diagrama, casi siempre un objeto 
 var visioSilverlightID = findVwaRenderingObject();
    var visioSLObject = document.getElementById(visioSilverlightID);
    var canvaselement = visioSLObject.content.findName("Workspace");
 
 try
 {
 //agregamos un objeto 
 var xaml = "";
 //agregamos un objeto 
 xaml+="";
 //agregamos un objeto 
 xaml+=" " ;
 //agregamos un objeto 
 xaml+="";
 //agregamos un objeto 
 xaml+="";
 xaml+="";

 xaml+="";
    var newControls  = visioSLObject.content.CreateFromXaml(xaml,true);
    canvaselement.Children.Add(newControls);
 }
 catch(ex)
 {
  alert(ex.toString());
  throw ex;
 }
}

function onShapeSelectionChanged(source, args){

}
En realidad el código es muy simple, sin mebargo es importante hacer mención aparte de la función que se encarga de crear los controles Silverlight a partir del código XAML, la función createFromXaml, acto seguido solo basta agregarlos al contenedor del diagrama (un objeto Canvas).

Es importante tambien mencionar que no todos los controles Silverlight se pueden crear a partir de esta API (aunque si se pueden manipular, si ya existen). Aquí puedes checar que objetos se pueden crear y cuales no, a través de la API de Silverlight en JavaScript.

Por último algunas referencias y el código js

JavaScript API for Silverlight
Objetos Silverlight expuesto por la API en JavaScript
Visio Services API
Función createFromXaml



Happy Coding!

Etiquetas

SharePoint 2010 (38) Microsoft (32) Desarrollo SharePoint (31) Gerardo Reyes Ortiz (27) SharePoint (20) SharePoint 2013 (18) Errores SharePoint (12) México (10) PowerShell (9) Silverlight (8) Visio Services (7) Features (6) MVP (6) Silverlight 3 (6) WebCast (6) Workflows (6) Configuracion SharePoint 2010 (5) D.F. (5) API REST (4) Configuracion SharePoint 2010; (4) Troubleshooting (4) Visual Studio 2010 (4) Visual studio (4) WSS (4) Web parts (4) Apps (3) Comunidad SharePoint (3) Configuración SharePoint 2013 (3) ODATA (3) SharePoint Server (3) SharePoint; Instalación SharePoint; Troubleshooting; Search Service (3) Silverlight 3.0 (3) Silverlight Toolkit (3) WebParts (3) javascript (3) jquery (3) Eventos SharePoint (2) Office 2010 (2) PeoplePicker (2) REST (2) SQL Server (2) Scripting (2) Search Service Application (2) SharePoint Designer (2) UPA (2) UPS (2) Workflows SharePoint (2) host header (2) Apps Development (1) Big Bang (1) CAS (1) CSOM (1) Codeplex (1) CompartiMOSS (1) Configuracion SharePoint 2010; Errores SharePoint (1) Configuracion SharePoint 2010; SharePoint 2010 (1) Custom Actions (1) Custom Editor Parts (1) Delegate Controls (1) Deployment (1) DisableLoopbackCheck (1) Document Library (1) Entrevista (1) Examenes de Certificación (1) Extract WSP (1) FBA (1) FS4SP (1) Fakes (1) Fast Search Server 2010 For SharePoint (1) Fiddler (1) HTTP.SYS (1) HTTPS (1) JSON (1) Language Pack's (1) Latam (1) MAXDOP (1) MCSM (1) MSExpertos (1) MVC (1) Microsoft México (1) Microsoft; Codeplex; Screencast; (1) My Sites (1) SQL Server 2012 (1) SQL Server Reporting Services (1) Screencast (1) Screencast; (1) Service Applications (1) Service Pack (1) SharePoint 2007 (1) SharePoint 2010 SP 1 (1) SharePoint API (1) SharePoint Conference (1) SharePoint Emulators (1) SharePoint Farm (1) SharePoint Health Analyzer (1) SharePoint Magazine (1) SharePoint Online (1) SharePoint Search (1) SharePoint Test (1) SharePoint; Desarrollo SharePoint (1) Shims (1) Simposio (1) Simposio Latinoamericano (1) SkyDrive Pro (1) Soporte Microsoft (1) Templates (1) Tip (1) VSeWSS (1) Virtual Machine (1) Visual Studio 2012 (1) WCF (1) WSS; IIS 7 (1) Web API (1) Web Content Management (1) Web Services (1) Windows 8 (1) Windows Live ID (1) Xml (1) appcmd (1) iOS (1) jqGrid (1) onload function (1)