[MOSS] Uso de Unity en SharePoint: System.InvalidOperationException: The type name or alias “TYPE” could not be resolved…

Estoy haciendo una prueba de conceto con SharePoint + Unity y me he encontrado con este error al añadir mi WebPart:

System.InvalidOperationException: The type name or alias ITaskRepository could not be resolved. Please check your configuration file and verify this type name.

Tengo las dlls en la GAC (Sí las pones en el bin del sitio funciona pero no me gusta :P) y la configuración de Unity en el Web.Config de la siguiente manera:

<unity>

  <aliases>

    <add

        alias="ITaskRepository" 

        type="Project.Application.WebParts.MVP.Repositories.ITaskRepository, Project.Application.WebParts" />

    <add

        alias="TaskRepository" 

        type="Project.Application.WebParts.MVP.Repositories.TaskRepository, Project.Application.WebParts" />

  </aliases>

   <container>

     <register type="ITaskRepository" mapTo="TaskRepository" />

   </container>

</unity>

Hablando con mi compañero de trabajo Pedro Santos, me comentó que el problema podía estar en el atributo type, que probase a ponerlo completo:

<unity>

  <aliases>

    <add

        alias="ITaskRepository" 

        type="Project.Application.WebParts.MVP.Repositories.ITaskRepository, 

              Project.Application.WebParts, 

              Version=1.0.0.0, 

              Culture=neutral, 

              PublicKeyToken=8854a40f8390bd5e" />

    <add

        alias="TaskRepository" 

        type="Project.Application.WebParts.MVP.Repositories.TaskRepository, 

        Project.Application.WebParts, 

        Version=1.0.0.0, 

        Culture=neutral, 

        PublicKeyToken=8854a40f8390bd5e" />

  </aliases>

   <container>

     <register type="ITaskRepository" mapTo="TaskRepository" />

   </container>

</unity>

 

Y tenía toda la razón.

Espero que os sirva, un saludo y buen finde para todos.

[MOSS] Evitar que los usuarios colaboradores modifiquen WebParts

En un portal de publicación el cliente desea que los usuarios colaboradores no puedan modificar WebParts:

image

Hasta donde yo se y sí alguien conoce una manera mejor estaré encantado de escucharla, en los Niveles de permisos, más concreto en colaborar, en los permisos de lista si desmarcamos el check de Editar elementos

image

evita que se editen los WebParts pero se pierde la edición de contenidos y eso no me vale, por eso me he creado un control que va en la master y que se encarga de hacer este trabajo haciendo uso de JavaScript (JQuery) para eliminar el td que contiene la flechita y así evitar que se modifiquen los webparts a menos que sea un administrador:

public class HideWebPartMenuControl : UserControl

{

    #region WebControl Events

 

    protected override void OnPreRender(EventArgs e)

    {

        if (!SPContext.Current.Web.CurrentUser.IsSiteAdmin)

        {

            const string javascriptcode = @"$(document).ready(function() {

                                                $('tr.ms-WPHeader').each(function(index) {

                                                    $('td:last', $(this)).remove();

                                                });

                                            });";

 

            if (!Page.ClientScript.IsStartupScriptRegistered("hidemenuwebpartjs"))

            {

                Page.ClientScript.RegisterStartupScript(

                    GetType(),

                    "hidemenuwebpartjs",

                    javascriptcode,

                    true

                );

            }

        }

 

        base.OnPreRender(e);

    }

 

    #endregion

}

 

 

Ahora, si entramos con un usuario colaborador la flechita desaparece:

image image

Espero que os sirva 😉