SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

Mostrando entradas con la etiqueta Mini-truco. Mostrar todas las entradas
Mostrando entradas con la etiqueta Mini-truco. Mostrar todas las entradas

jueves, 19 de julio de 2012

Muro de fotos en SharePoint 2007

Imaginemos que tenemos una lista en SharePoint con un campo de tipo persona que muestra la imagen del usuario. Una vista estándar de lista de SharePoint nos mostraría una foto en cada renglón. ¿Pero cómo podríamos hacer para mostrar las fotos como en un muro, una al lado de la otra? Algo así:

image

Seguramente hay muchas formas de resolverlo con SharePoint Designer por ejemplo. Sin embargo, aquí vamos a mostrar una opción con jQuery y una CEWP. Espero les resulte interesante:

/*

Este script convierte una vista con estilo tabla basica con un sólo campo de usuario (con foto) en un muro de fotos

*/
function fotos () {

    // alert ('Controlo si hay fotos para mostrar');

    var hay_fotos = true;

    // Verifico si hay elementos a mostrar
    $("td:contains('No hay elementos que mostrar en esta vista de la'):last").each(function(index) {
        hay_fotos = false;
        });

    // Oculto la vista y el tìtulo de la vista
    document.writeln("<style> .ms-listviewtable {display: none;} .ms-listdescription {display: none;} </style>");

    // Si hay elementos, aplico formato
    if ( hay_fotos ) {

        // alert ('Busco las fotos');

        // Obtengo fotos de la lista
        var fotos = new Array();
        z = 0;
        $('.ms-listviewtable > tbody > tr > td > table > tbody > tr > td > a > img').each(function(index) {
            //alert ($(this).attr("src"));
            if ( !( $(this).attr("src") == '/_layouts/images/person.gif') ) {
                // Sólo tomo aquellos que usuarios que tengan foto
                fotos[z] = '<img OnError=\"foto_error()\" class=\"fotomuro\" src=\"' + $(this).attr("src") + '\" title=\"' + $(this).attr("alt").substring(8) + '\"></img>';
                z = z +1;
                }
            });

        // alert ('Armo el muro');

        // Armo el muro de fotos
        document.writeln ('<p class=\"muro\" >');
        document.writeln ('<div>¿Tu foto no está? <a title=\"\" href=\"/sites/Intranet/_layouts/MySite.aspx\" target=_blank>Subí tu foto</A></div></BR>');
        //for (i = 0; i < 5; i++) {
        for (i = 0; i < fotos.length; i++) {
            document.writeln (fotos[i]);
        }

        document.writeln ('</p></BR></BR>');

        // Un poco de estilo a las fotos
        document.writeln("<style> .muro {} .fotomuro { width:62px; height:62px; } </style>");
    }
}

function foto_error() {
    window.event.srcElement.style.display = "none";
}

El código de la CEWP sería:

<script type="text/javascript"
src="/sites/Intranet/Internal/jquery142min.js"></script>

<script type="text/javascript"
src="/sites/Intranet/Internal/fotos.js"></script>

<script type="text/javascript">

fotos();

</script>

Hasta el próximo truco jQuery! Nos vemos…

lunes, 13 de febrero de 2012

Trucos de URL en #SharePoint

A veces necesitamos abrir diferentes solapas en una librería de documentos. Esto se puede hacer especificando el parámetro InitialTabId tal como nos explican en SharePoint Kings: http://www.sharepointkings.com/2011/11/open-different-tabs-in-document-library_21.html.

miércoles, 18 de mayo de 2011

¿Cómo ocultar campos en Sharepoint 2010 usando PowerShell?

Hola a todos, en una reciente implementación sobre Sharepoint 2010, me encontré con el pedido del usuario que ciertos campos que corresponden a la lista, no deberían estar disponibles al dar de alta un nuevo elemento en la lista. Esta misma problemática la habíamos tenido en Sharepoint 2007 y una forma elegante y fácil de hacerlo era usando JQuey y Javascrip (Preseleccionar u ocultar valores en las pantallas de alta).

Ahora bien, para Sharepoint 2010 estamos utilizando el poder de PowerShell integrado con Sharepoint 2010. Lo que tienen que hacer es tomar un editor de texto y generar un archivo PS1 con las siguientes instrucciones:

#Abro el sitio
$site = new-object Microsoft.SharePoint.SPSite("
http://MiServidor")
$web = $site.OpenWeb()
#Abro la lista 
$list = $web.Lists["MiLista"]
#Configuro Columna1, en este caso la columna no se ve en ningún formulario standard. 
$field = $list.Fields["Columna1"]
$field.ShowInNewForm = 0
$field.ShowInEditForm = 0
$field.ShowInDisplayForm = 0
$field.Update()
#set Columna2, en este caso, inhabilito la columna sólo para el alta.
$field = $list.Fields["Columna2"]
$field.ShowInNewForm = 0
$field.Update()
#Update y Dispose
$list.Update()
$web.Dispose()
$site.Dispose()

Luego lo ejecutan para el sitio correspondiente, y listo. Una forma sencilla de ocultar campos y con las herramientas que provee Sharepoint 2010.

Hasta el próximo truco.

sábado, 26 de junio de 2010

Mini truco – Ocultar “Eliminar elemento” en una página de edición de ítem

Si lo que buscamos es no permitir que los usuarios puedan eliminar items desde la página standard de edición de ítems, y no queremos modificar permisos o generar eventos, incluyamos en la página Editform.aspx un CEWP (Content Editor Web Part) con el siguiente código:

<style>
    a.ms-toolbar{
         display:none;
    }
    .ms-separator{
         display:none;
    }
</style>

Espero les sea de ayuda y nos vemos en la próxima.

lunes, 14 de junio de 2010

Cambiar la URL del botón de UPLOAD

En algunos casos necesitamos construir nuestra propia página para cargar documentos en una librería. Si nos encontramos en esta situación, es posible que también queramos cambiar la URL del botón para cargar documentos (tanto el botón, como los links del dropdown que depende de él).

image Para solucionar esto, podemos recurrir a un truco con jQuery del autor Alexander de SharePoint JavaScripts. Se trata de una pequeña porción de código dentro de una CEWP que nos permite modificar:

  • El link directo del botón de "upload"
  • El link de "upload document"
  • El link de "upload multiple

Pueden descargar el código desde este enlace: http://sharepointjavascript.wordpress.com/2010/06/08/manipulate-upload-link-in-document-library/

Que les sea útil!

Más trucos de jQuery en: http://surpoint.blogspot.com/search/label/jquery.

jueves, 27 de mayo de 2010

Mini truco jQuery del día

image¿Por alguna razón necesitas cambiar el texto de un enlace en una página de SharePoint? Por ejemplo, deseas cambiar este texto: 

jQuery lo resuelve en dos líneas:

imagevar x=$('#onetidMoreAnn');
x.text("(More updates...)");

Que lo disfruten!

Más trucos de jQuery en: http://surpoint.blogspot.com/search/label/jquery.

viernes, 21 de mayo de 2010

Quitar la opción Editar en Hoja de Datos

Para los que alguna vez quisieron quitar la opción de Editar en Hojas de Datos, les paso un artículo del sitio eLumenotion que les puede resolver el problema fácilmente utilizando jQuery.

Preventing the Use of Edit in Datasheet

Hasta la próxima.

miércoles, 12 de mayo de 2010

Mini truco: RunWithElevatedPrivileges en ItemAdded

En algunos casos, necesitamos que en el evento ItemAdded se actualicen algunos campos de la lista, pero el usuario que da de alta el ítem no tiene los permisos necesarios para poder actualizarlos. En este caso, si utilizamos el evento ItemAdded, va a lanzar una excepción del tipo “Access Denied”.

Para salvar esta excepción, podemos utilizar el evento SPSecurity.RunWithElevatedPrivileges. Aquí les dejo un ejemplo, en donde luego de dar de alta un ítem de lista necesitaba determinar el valor de un campo del tipo imagen:

public override void ItemAdded(SPItemEventProperties properties){

Guid listID;

int itemID;

listID = properties.ListId;

itemID = properties.ListItem.ID;

SPSecurity.RunWithElevatedPrivileges(delegate() {

        SPSite Site = new SPSite(properties.WebUrl);

        using (SPWeb currentWeb = Site.OpenWeb()){

                SPList list = currentWeb.Lists[listID];

                SPListItem addedItem = list.GetItemById(itemID);

                addedItem["ID_Idea"] = itemID;

                addedItem["Imagen_CicloVida"] = "/pi/Arte/PI_WF_Discovery.PNG";

                addedItem.SystemUpdate();

         }

});

}

Espero les sirva y nos vemos en otra entrada.

viernes, 30 de abril de 2010

Mini truco jQuery del día

Les dejo esta línea de código para reemplazar iconos de SharePoint que no nos gustan. Por ejemplo: el icono "Editar" que podemos poner en las vistas de listas:

$("img").each(function() {
  $(this).attr("src", $(this).attr("src").replace("/_layouts/images/edititem.gif", "/PWA/Images1/mi_edit.png"));  })

Que lo disfruten!

Más mini-trucos en http://surpoint.blogspot.com/search/label/Mini-truco.

Más jQuery en: http://surpoint.blogspot.com/search/label/jquery.

martes, 20 de abril de 2010

Mini truco jQuery del día

Les dejo esta línea de código para eliminar el mensaje "No hay elementos que mostrar en esta vista de ..."

$("td:contains('No hay elementos que mostrar en esta vista de la'):last").empty();

Hasta la próxima!

Más mini-trucos en http://surpoint.blogspot.com/search/label/Mini-truco.

jueves, 7 de enero de 2010

¿Plantillas de páginas en SharePoint?

En SharePoint 2007 no existe forma (out of the box) de guardar una página como plantilla. Sin embargo esta puede ser una necesidad bastante común.

Existen dos maneras (workaround) de resolver este inconveniente utilizando desarrollo en SharePoint: 1) Creando una plantilla; 2) Copiando una página

Crear una plantilla en forma programática

Esta sería la forma más ordenada de resolver este problema, pero también la más compleja. En el siguiente vínculo explico cómo hacerlo: http://surpoint.blogspot.com/2009/10/crear-un-una-plantilla-de-paginas-con.html

Copiar una página en base a una página base ya existente

Esta es una forma menos ortodoxa, pero útil en algunos casos. Consiste en crear una Application Page cuyo objetivo sea crear una nueva página en base a una ya existente. Les dejo el código fuente:

SPWeb web = SPContext.Current.Web;
SPFile source_page = web.GetFile(Context.Request["Origen"]);
string Destino = Context.Request["Destino"];
source_page.CopyTo(Destino);
web.Update();
Context.Response.Redirect(Destino);

Espero que les haya sido útil! Hasta la próxima…

martes, 5 de enero de 2010

Mini-truco del día: SPLookupURLValue (SharePoint)

¿Cómo cargar una campo de tipo Lookup programáticamente?
Veamos un ejemplo desde un evento:


public override void ItemAdded (SpItemEventProperties properties)
{
  SPFieldLookupValue Proyecto = new SPFieldLookupValue(properties.ListItem[“Proyecto”] as string);

  properties.ListItem[“Copia de Proyecto”] = Proyecto.LookupId;

  properties.ListItem.Update();
}


Fuente: http://surpoint.blogspot.com/2009/12/manejadores-de-eventos-en-sharepoint.html


Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

martes, 29 de diciembre de 2009

Mini-truco del día: SPFieldURLValue (SharePoint)

¿Cómo cargar una campo de tipo URL programáticamente?
Veamos un ejemplo desde un evento:

public override void ItemAdded (SpItemEventProperties properties)
{
  SPFieldURLValue AgregarActividad = new SPFieldURLValue();
  AgregarAcividad.Description = “Agregar Actividad…”;
  AgregarActividad.URL = “/g/Lists/Fases/NewForm.aspx”;
  properties.ListItem[“Agregar actividad”] = AgregarActividad;
  properties.ListItem.Update();
}

Fuente: http://surpoint.blogspot.com/2009/12/manejadores-de-eventos-en-sharepoint.html

Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

domingo, 6 de diciembre de 2009

Trucos en las URLs de SharePoint parte 2

Siguiendo con los trucos sobre parámetros que pueden pasarse vía URL a las páginas estándar de SharePoint, les paso tres: 1) Listar todas las versiones de un ítem, 2) Editar una página de alta o edición de ítem y 3) Re-direccionar el botón Cerrar o Aceptar de una página estándar.

Listar todas las versiones de un ítem:

Como ustedes saben, SharePoint muestra en forma predeterminada la versión actual de un ítem. Si desean mostrar todas las versiones, deben usar el parámetro IncludeVersions:
http://srv06/Intranet/yqplus/Lists/Defectos/AllItems.aspx?IncludeVersions=TRUE

Editar una página de alta o edición de ítems:

Las pantallas NewForm.aspx y EditForm.aspx no pueden ser editadas en forma predeterminada y de esta manera se hace imposible agregarles webparts. Sin embargo existe una manera muy sencilla de editarlas (no soportada por Microsoft) que es agregarle el parámetro ToolPaneView:
http://srv06/Intranet/yqplus/Lists/Defectos/DispForm.aspx?ID=57&ToolPaneView=2

Re-direcciones el botón Cerrar o Aceptar de una página estándar.

Luego de efectuar un alta o editar un ítem en una lista, el foco vuelve a la vista de la lista “Todos los Elementos”. Para evitar esto se debe utilizar el parámetro Source. Veamos un ejemplo para que en lugar de volver a la vista “Todos los elementos” vuelva a la página principal del sitio:
http://srv06/Intranet/yqplus/Lists/Defectos/NewForm.aspx?Source=http://srv06/Intranet/default.aspx

Fin y más trucos

Si desean ver el artículo sobre la parte 1 de los trucos, orientado a filtros, consulten esté enlace: http://surpoint.blogspot.com/2009/09/filtrando-desde-la-url-tips.html.
Hasta la próxima y como siempre espero haber sido útil!

Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

martes, 22 de septiembre de 2009

Remover o reemplazar vínculos estándar en Sharepoint


¿Cuántas veces han necesitado eliminar o reemplazar un link estándar de sharepoint de las columnas de tipo búsqueda o usuario por ejemplo? Muchas seguramente. Les paso un truco usando jquery:

Ejemplo de llamado a las funciones:
yq_remover_links( ["/_layouts/userdisp.aspx"] );
yq_alterar_url( "/ap/Publicas/","/ap/_layouts/ap/VerConsultaConSeguridad.aspx?Tipo=Publicas&Consulta=" );


Función para remover un link:

function yq_remover_links ( condicion ) {
for (i = 0; i < condicion.length; i++) {
$("a[href]").each(function() {
if ( this.href.search(condicion[i]) != -1)
$(this).before('<span>' + $(this).text() + '</span>').remove();
});
}

Función para reemplazar un link:

function yq_alterar_url ( vieja, nueva ) {
$("a[href]").each(function() {
this.href = this.href.replace(vieja, nueva);
})
}
Que lo disfruten!

Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

lunes, 7 de septiembre de 2009

Filtrando desde la URL - Tips

Existen algunas opciones que nos permiten filtrar y ordenar elementos de una vista de sharepoint, pasando las condiciones como parámetros en la URL. Estas opciones son:

Filtro sencillo:

http://vm-wss3/yq/divel/Lists/Defectos/Abiertos.aspx?FilterField1=Severidad&FilterValue1=B

Filtro múltiple:

http://vm-wss3/gain/Lists/Ofertas/AllItems.aspx?FilterName=Estado&FilterMultiValue=Cotizando;Presentada

Orden:

http://vm-wss3/yq/divitel/Lists/Defectos/Abiertos.aspx?SortField=Severidad&SortDir=Asc


¿Interesante no? Sin embargo lo más interesante se da cuándo el campo por el cuál estamos filtrando no es un campo visible de la lista. Las ventajas en este caso son:

- Filtra de todas maneras
- No permite cambiar el filtro al usuario
- Ni hay manera de llegar a los elementos que quedaron fuera del filtro
Muy útil a la hora de manejar relaciones maestro-detalle.

Hasta la próxima!

Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

jueves, 27 de agosto de 2009

SPFile y SPList

Breve ejemplo de cómo acceder a las propiedades de un documento almacenado en un document library. Que les sea útil:

SPWeb web = SPContext.Current.Web;
SPList list = web.Lists[Context.Request["Tipo"]];
SPListItem item = list.Items.GetItemById(Convert.ToInt32(Context.Request["ID"].ToString()));
SPFile file = item.File;
Context.Response.Redirect("/ap/" + Context.Request["Tipo"] + "/" + file.Name);


Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

¿Tengo permisos?

¿Cómo puedo verificar programáticamente si tengo permisos en sharepoint. Muy sencillo, aquí va un ejemplo, que lo disfruten...

SPWeb web = SPContext.Current.Web;
SPList publicas = web.Lists["Publicas"];
string Rol;
if (publicas.DoesUserHavePermissions(SPBasePermissions.AddListItems))
{
Rol = "UA"; //Usuario avanzado
}
else
{
Rol = "U"; //Usuario
}


Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco