Solución. Error al activar característica de sitio de la comunidad

[ Error trying to activate community site feature / SharePoint 2013]

Si al intentar activar la característica SharePoint te envía a una página con el siguiente mensaje:

Site
La característica del ámbito Sitio que se está activando tiene una dependencia de la característica oculta ‘FeatureDefinition/15/4326e7fc-f35a-4b0f-927c-36264b0a4cf0′ del ámbito Colección de sitios (Id.: ‘4326e7fc-f35a-4b0f-927c-36264b0a4cf0′). Las características ocultas no se pueden activar automáticamente en los ámbitos. Puede que haya una o más características del ámbito Colección de sitios visibles que activen automáticamente la característica oculta dependiente.

Web
La característica del ámbito Sitio que se está activando tiene una dependencia de la característica oculta ‘FeatureDefinition/15/00bfea71-6a49-43fa-b535-d15c05500108′ del ámbito Sitio (Id.: ’00bfea71-6a49-43fa-b535-d15c05500108′). Las características ocultas no se pueden activar automáticamente en los ámbitos. Puede que haya una o más características del ámbito Sitio visibles que activen automáticamente la característica oculta dependiente.
 
Web
La característica del ámbito Sitio que se está activando tiene una dependencia de la característica oculta ‘FeatureDefinition/15/d32700c7-9ec5-45e6-9c89-ea703efca1df’ del ámbito Sitio (Id.: ‘d32700c7-9ec5-45e6-9c89-ea703efca1df’). Las características ocultas no se pueden activar automáticamente en los ámbitos. Puede que haya una o más características del ámbito Sitio visibles que activen automáticamente la característica oculta dependiente.

Web
La característica del ámbito Sitio que se está activando tiene una dependencia de la característica oculta ‘FeatureDefinition/15/947afd14-0ea1-46c6-be97-dea1bf6f5bae’ del ámbito Sitio (Id.: ‘947afd14-0ea1-46c6-be97-dea1bf6f5bae’). Las características ocultas no se pueden activar automáticamente en los ámbitos. Puede que haya una o más características del ámbito Sitio visibles que activen automáticamente la característica oculta dependiente.
 
Web
La característica del ámbito Sitio que se está activando tiene una dependencia de la característica oculta ‘FeatureDefinition/15/c6a92dbf-6441-4b8b-882f-8d97cb12c83a’ del ámbito Sitio (Id.: ‘c6a92dbf-6441-4b8b-882f-8d97cb12c83a’). Las características ocultas no se pueden activar automáticamente en los ámbitos. Puede que haya una o más características del ámbito Sitio visibles que activen automáticamente la característica oculta dependiente.

Web
La característica del ámbito Sitio que se está activando tiene una dependencia de la característica oculta ‘FeatureDefinition/15/00bfea71-c796-4402-9f2f-0eb9a6e71b18′ del ámbito Sitio (Id.: ’00bfea71-c796-4402-9f2f-0eb9a6e71b18′). Las características ocultas no se pueden activar automáticamente en los ámbitos. Puede que haya una o más características del ámbito Sitio visibles que activen automáticamente la característica oculta dependiente.
 

Debes ejecutar los siguientes comandos desde la – Consola de administracion de SharePoint 2013 –

Enable-SPFeature -identity 4326e7fc-f35a-4b0f-927c-36264b0a4cf0 -URL http://servidor:puerto
Enable-SPFeature -identity 00bfea71-6a49-43fa-b535-d15c05500108 -URL http://servidor:puerto
Enable-SPFeature -identity d32700c7-9ec5-45e6-9c89-ea703efca1df -URL http://servidor:puerto
Enable-SPFeature -identity 947afd14-0ea1-46c6-be97-dea1bf6f5bae -URL http://servidor:puerto
Enable-SPFeature -identity c6a92dbf-6441-4b8b-882f-8d97cb12c83a -URL http://servidor:puerto
Enable-SPFeature -identity 00bfea71-c796-4402-9f2f-0eb9a6e71b18 -URL http://servidor:puerto

En mi caso se ve así:

image

Como ves lo que se hace es activar las características ocultas que nos indicó, Ahora intenta activar nuevamente, ya debería funcionar  clip_image001.

Instalar SharePoint 2010 en Windows 8

Descargar pre-requisitos:

Primero debemos descargar e instalar los pre-requisitos para eso les recomiendo usar el siguiente script de powershell que encontraran en el siguiente enlace: http://gallery.technet.microsoft.com/office/bcf3332d-f726-4ac7-b01a-eeda4b7ece8e

Configurar: IIS

Luego debemos cambiar el Framework a usar en IIS al V2.0 (quitar la V4.0). Para hacer esto desde el _IIS Manager_ seleccionamos el _Application Pools_ y en el menu _Actions_ seleccionamos _Set Application Pool Defaults_ en ese punto deberíamos tener en la sección (General) la propiedad _.Net Framework Version_

clip_image001

Preparar el instalador:

SharePoint esta creado para ser instalado naturalmente en un sistema operativo de servidor así que debemos hacer un pequeño cambio en el archivo _config.xml _ del instalador para que permita ser instalado en Windows 8. Para realizar esto debemos copiar todos los archivos al disco, ubicar el archivo (Se encuentra en _C:\XXXubicacion\\Files\Setup\config.xml_) y editar la linea <Setting Id="AllowWindowsClientInstall" Value="True"/>

clip_image002

Con estos tres pasos ya tenemos todo listo para iniciar nuestra instalación de la forma habitual.

Nota: Si tienen instalado InfoPath 2013 les dará error, hasta ahora (21-01-2013)  la solución que encontré fue desinstalarlo

.

Activar la visualizacion de workflow con Visio en SharePoint 2010

Si necesitas una visualizacion grafica de tus flujos de trabajos como la siguiente imagen:

clip_image002

Solo debes seguir estos pasos:

Desde: Central Administration

1.En el sitio (Central Administration) nos dirijimos a (System Settings >> Manage services on server) y verificamos que el servicio (Visio Graphics Services) este iniciado.

clip_image004

2. Nos dirijimos a (Manage Web Applications) y verificamos que el (Visio Graphics Service) este disponible como un (Service Connections) para la (web application ) que contiene el sitio donde necesitamos visualizar el workflow.

clip_image006

 

3. En la pagina ( Manage Farms feature) activamos (Visio Web Access).

clip_image008

 

Desde: Site

4.En la pagina (Manage Site Collections Feature) del sitio donde necesitamos visualizar activamos (SharePoint Server Enterprise Site Collection features)

clip_image010

 

5. En la pagina (Manage Site Features) verificamos que la carasteristica (SharePoint Server Enterprise Site features) este activada.

clip_image012

Crear tareas por codigo – SharePoint 2010

 

Partimos del hecho que tenemos una lista de tareas [OperacionesMensuales] que necesitamos poblar en automático desde un proceso externo o simplemente porque son recurrentes y queremos automatizar su carga para no repetir el proceso mes a mes.

Seria una lista como esta:

clip_image002

En este escenario vamos a suponer que la lista de tareas llega desde un archivo texto como este:

clip_image003

Donde cada valor esta separado por el carácter pipe ‘|’.

Ejemplo: tarea1|descripcion1|SAYAKA\norberto.planchart|01-10-2012

Para cumplir con esta meta vamos a crear un proyecto de consola y le agregamos una referencia a Microsoft.SharePoint. En las propiedades del proyecto nos aseguramos que el framework usado sea el 3.5

clip_image004

Y que la plataforma destino sea x64

clip_image005

Con eso tendremos configurado el proyecto.

¡Ahora vamos con el código!

Lo dejo comentado para facilitar la explicación, aunque si estas en esto notaras que es auto-explicativo ;-) Lo único que considero digno de aclarar es que como es de esperar el usuario que usemos en web.AllUsers debe estar registrado para ese sitio.

Nota: Para este ejemplo esta en código la ruta del sitio, la ruta del archivo de tareas y el nombre de la lista lo que claro esta debería ser recibido por parámetro o leído desde algún repositorio externo.

using System;
using System.Text;
using Microsoft.SharePoint;
using System.IO;

namespace CreateTask
{
    class Program
    {
        static void Main(string[] args)
        {
            string _rutaSitio = "http://sayaka:19317/";
            using (SPSite site = new SPSite(_rutaSitio))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    string _rutaArchivo = "C:\\ProcesosMensuales\\ListaTareasMensuales_10.txt";
                    using (StreamReader reader = new StreamReader(_rutaArchivo))
                    {
                        string _nombreLista = "OperacionesMensuales";
                        SPList listOctubre = web.Lists[_nombreLista];
                        string _lineaTarea;
                        while ((_lineaTarea = reader.ReadLine()) != null)
                        {
                            SPListItem item = listOctubre.Items.Add();
                            item["Title"] = _lineaTarea.Split('|')[0];
                            item["Description"] = _lineaTarea.Split('|')[1];
                            item["Assigned To"] = web.AllUsers[_lineaTarea.Split('|')[2]];
                            item["Due Date"] = _lineaTarea.Split('|')[3];
                            //y asi con todas las demas propiedades requeridas...
                            item.Update();
                            listOctubre.Update();
                            Console.WriteLine("Agregada: " + _lineaTarea.Split('|')[0]);
                            System.Threading.Thread.Sleep(1000);//damos 1 segundo para no saturar :-)
                        }
                        Console.WriteLine("Operacion realizada con exito!!!");
                        Console.ReadLine();
                    }
                }
            }
        }
    }
}

clip_image007

Al ejecutarlo deberíamos obtener algo como:

clip_image009

Y al revisar nuestra lista de tareas deberíamos tener cargadas todas nuestras tareas.

clip_image011

Aqui les dejo el proyecto: http://dl.dropbox.com/u/26490398/c/nplanchart.wordpress.com_CreateTask.zip

Recuperar [ contraseña / clave / password] del SA en SQL Server

 

En el caso que puedas entrar al SQL Server Management Studio con tu usuario de Windows mediante seguridad integrada pero este no tenga el permiso necesario para restaurar la clave del SA de SQL Server puedes elevarlo mediante estos simples pasos:

Abre una consola de line de comando y escribe:

sqlcmd -S Servidor\Instancia (presiona enter)

Luego:

EXEC sp_addsrvrolemember ‘DOMINIO\USUARIO’, ‘sysadmin'; (y presiona enter)

Después:

Go (y presiona enter, ya esto del enter lo agarre de juego Winking smile)

En mi caso se ve así:

clip_image002

Ahora desde el SQL Server Management Studio puedes cambiar la clave normalmente:

clip_image003

clip_image005

clip_image007

 

Suerte!!! Smile

Borrar Sitio con Sub-Sitios por código – SharePoint 2010

 

El escenario es una tarea sencilla que en algunos casos se puede tornar tediosa y es cuando necesitamos borrar un sitio que tiene sub sitios la interfaz de SharePoint nos muestra un mensaje como este: Error deleting Web site ["/RecursosHumanos"]. You can’t delete a site that has subsites.

clip_image002

Dependiendo la cantidad de sub sitios y que tan anidados estén podemos decidir ir por la interfaz borrando uno a uno o usar un poco de código. Si decides ir por el lado del código aquí están los pasos:

Creamos un proyecto de consola y le agregamos la referencia a Microsoft.SharePoint:

Lo podemos encontrar en: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll

En las propidades del proyecto nos aseguramos que el framework usado sea el 3.5

clip_image004

Y que la plataforma destino sea x64

clip_image006

Ya con eso tendremos configurado el proyecto y solo nos queda este pequeño código:

clip_image008

El código se describe solo, una llamadita recursiva al método DeleteWeb resuelve todo ;-)

¡Les dejo el proyecto para descarga por si no hay tiempo para hacerlo paso a paso!

http://dl.dropbox.com/u/26490398/c/nplanchart.wordpress.com_DeleteSiteWithSubSite.zip

 

clip_image010

Prevenir el doble submit (doble click)

El doble submit ocurre cuando se envía una petición mas de una ves ya sea porque el servidor tarda en dar respuesta o porque el usuario es hiperactivo. El punto es que debemos controlar ese comportamiento y bloquear el botón en el primer envió. El doble submit no da mayores problemas cuando la petición es por ejemplo un reporte pero hay casos donde es crítico el resultado duplicando registros o enviando mensajes erróneos como que no se puede eliminar un registro cuando en realidad si se realizo en primer envió.

Les dejo una solución que contempla el uso de los validadores en este caso un simple RequiredFieldValidator.

Primero creemos un formulario con los siguientes objetos:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    Valor x (requerido) :
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
        ErrorMessage="Valor x requerido">*</asp:RequiredFieldValidator>
    &nbsp;
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Enviar" />
    <br />
    Respuesta:&nbsp;
    <asp:TextBox ID="TextBox2" runat="server" Width="302px"></asp:TextBox>
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
</asp:Content>

Luego creemos el metodo que registrara en cada boton el codigo para evitar el doble envio:

 private void PreventingDoubleSubmit(Button button)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("if (typeof(Page_ClientValidate) == ' ') { ");
        sb.Append("var oldPage_IsValid = Page_IsValid; var oldPage_BlockSubmit = Page_BlockSubmit;");
        sb.Append("if (Page_ClientValidate('" + button.ValidationGroup + "') == false) {");
        sb.Append(" Page_IsValid = oldPage_IsValid; Page_BlockSubmit = oldPage_BlockSubmit; return false; }} ");
        sb.Append("this.value = 'Processing...';"); 
        sb.Append("this.disabled = true;");
        sb.Append(ClientScript.GetPostBackEventReference(button, null) + ";");
        sb.Append("return true;");

        string submit_Button_onclick_js = sb.ToString();
        button.Attributes.Add("onclick", submit_Button_onclick_js);
    }

Por ultimo nos queda “registrar” en la carga del formulario a cada boton:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session["Cantidad_de_Procesamientos"] = 0;
            PreventingDoubleSubmit(Button1);
        }
    }

Para verificar que todo esta bien pueden comentar la linea PreventingDoubleSubmit(Button1); y colocar en el metodo algo asi:

protected void Button1_Click(object sender, EventArgs e)
    {
        Session["Cantidad_de_Procesamientos"] = Convert.ToInt32(Session["Cantidad_de_Procesamientos"].ToString()) + 1;
        TextBox2.Text = "Cantidad de procesamientos: " + Session["Cantidad_de_Procesamientos"].ToString();
    }

Les dejo la solucion con el metodo para Button e ImageButton: http://dl.dropbox.com/u/26490398/c/nplanchart.wordpress.com_PreventingDoubleSubmit.zip

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 240 seguidores