Archivo de la etiqueta: JavaScript

Fácil y rápida: Crear un sitio de SharePoint usando resto

Hay un montón de recursos mostrar cómo hacerlo, Pero no pude encontrar un enlace acudir integral, Así que aquí estamos.

Puede crear un sitio de SharePoint usando la API de REST.  Aquí hay un ejemplo totalmente al horno:

<!--
    SiteRequestForm.html: Recopilar información y crear un sitio para el usuario.
-->

<Centro>
<mesa>
    <TR>
        <TD>Nombre del sitio:</TD>
        <TD><entrada tipo= "text" nombre"SiteName =" ID."SiteName =" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <entrada tipo= "enviar" ID.= CreateSiteButton"" valor= "Crear el sitio" />
        </TD>
    </TR>
</mesa>
</Centro>

<secuencia de comandos src="../Plugins/jQuery-1.11.0.min.js"></secuencia de comandos>

<secuencia de comandos>
var CreateSiteLogicContainer = {

    createSiteData: {
            "los parámetros": {
                __metadata: { "tipo": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Título: "Paultest1",
                Descripción: "resto-creado web por Pablo!",
                Idioma: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: falso
            }
    },

    createSite: función () {

        jQuery.support.cors = verdadero;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            método: "EL POST",

            cabeceras: {
                "Aceptar": "application/json; OData = verbose",
                "content-type": "application/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            datos: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            éxito: función () { alerta("el éxito"); },
            error: función () { alerta("error"); }

        });
    },

    wireUpForm: función () {
        $("#CreateSiteButton").Haga clic en(función () {
            alerta("A punto de probar y crear el sitio.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</secuencia de comandos>

Cuando exitoso, obtienes un paquete JSON en respuesta así:

image

Mis pensamientos claves y aprendizajes de esta inclusión:

  • Este enfoque utiliza jQuery.  En mi caso, mi biblioteca jQuery se encuentra en ".../ plugins. "  Usted querrá cambiar eso para señalar su lugar favorito de JQ.
  • Puede copiar y pegar ese fragmento entero en un elemento Web Editor de contenido en una página y debería funcionar bien.  Usted querrá cambiar el punto final de la llamada de API y asegúrese de que usted referencia JQ correctamente.
  • La URL es relativa a punto final de su API.  En mi caso, es crear subsitios debajo https://bigapplesharepoint.com
  • No es necesario proporcionar una longitud del contenido. Algunas entradas en el blog y MSDN documento implica que hacer, Pero pasó por mí automáticamente, que supongo que está siendo manejado por la llamada .ajax $ sí mismo.
  • Esta línea es necesaria para evitar una respuesta "prohibida": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Hay otras maneras de hacerlo, Pero esto es muy bonito.  He perdido el enlace al blog que proporcionan este acceso directo.  H/T te, misterioso blogger!

Buena suerte y espero que esto ayude a alguien.

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Rápida y sencilla: SharePoint resto llamar sólo devuelve 100 Registros

Yo he estado trabajando en un sitio web orientada al público para mi práctica en SharePoint Nueva York y usa un montón de llamadas JavaScript y resto para mostrar contenido.

Durante el desarrollo principal, Sólo se crea un pequeño conjunto de datos con 10 o así las filas de una lista personalizada y mis llamadas de resto todo tiraron desde allí.  Una vez me encontré la lista para tener unas cien filas de datos para pruebas de crecimiento esperado, Encontré que estaba recibiendo exactamente 100 filas devueltas en mis llamadas resto.

Esto es una cosa muy simple a la dirección.  En mi caso (y yo creo en la mayoría de los casos), el valor predeterminado resto llamadas a SharePoint (y posiblemente como un estándar del sector?) retorno 100 filas.  Para volver más que el valor por defecto, Utilice el parámetro $top en tu llamada, como en:

OBTENER /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/artículos?$Seleccione ID =,Título,Categorías/título,Blog_x0020_Author/título,DatePublished,BlogSummary&$ampliar = Blog_x0020_Author,Categorías&$filtro =&$Top = 9999

Elegí 9999 en este caso puesto que sé growth-wise, No habrá más 200 o tan filas agregar a esta lista en un año.  Si se vuelve lento, podemos implementar una paginación en el camino.

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Pobre del almacenamiento en caché en JavaScript

[TL;Versión DR: utiliza cookies para almacenar los resultados de las llamadas asincrónicas; prestar inmediatamente los resultados de las últimas llamadas asincrónicas y validarlos luego después de carga de la página.]

He estado trabajando en sitio de intranet de SharePoint para un cliente que ofrece, entre otras cosas, una estilizada navegación secundaria cuyas opciones del menú se administran mediante una lista personalizada vieja regular.  La idea es que el cliente obtiene al menú de "su" sitio de control sin afectar o ser afectados por la navegación global por lo.

(Hay algo increíblemente subversiva con la adición de un CEWP que apunta a un archivo HTML que carga un CSS y JS fundamentalmente modificar casi todo sobre el comportamiento de un sitio... pero eso es para otro post)

El código para esta bastante simple:

El dolor punto aquí es cada vez que alguien golpea una de las páginas del sitio, navegador del usuario es llegar a obtener elementos de la lista.  Una vez termine la dev y pruebas han demostrado que todo sea estable y completa, esta llamada no es necesaria más de 99% el tiempo desde el menú rara vez cambia.  También tiene un raro efecto UI que es común en este nuevo mundo de sitios web de hiper-ajaxy – hace que la página y sólo entonces hace el menú render.  Es nervioso y distracción en mi punto de vista.  Y nervioso. Por lo tanto, almacenamiento en caché. 

Modifiqué la lógica de esta manera:

  • Busque una cookie en el navegador que contiene el menú como último lo leí
    • Si encuentran, hacerla inmediatamente.  No esperes a terminar de cargar la página.  (Usted necesita para asegurarse de que el código HTML está ubicado estratégicamente aquí, Pero no es difícil de hacer).
  • Esperar a que la página termine de cargar y hacer un async llamar a cargar los elementos de menú de una lista utilizando el resto lists.asmx o lo que sea
  • Comparar lo que tengo contra la cookie
    • Si coincide con, PARADA
    • De lo contrario, utilizando jQuery, rellenar dinámicamente un montón si <Li>está en un <UL>
  • Usar CSS para hacer todo el formato
  • Beneficio!

Algunos de ustedes van a decir, "Hola! no habrá verdadera caché aquí puesto que estás leyendo el menú de todos modos cada vez.”  Y tienes razón, no voy a dar al servidor cualquier tipo de rotura.  Pero porque la llamada asincrónica y ocurre después de la Página inicial carga HTML representa plenamente, "parece" más sensible al usuario.  El menú bastante rinde tanto como la página dibuja.  Si el menú pasa al cambio, el usuario se somete a un nervioso volver a dibujar del menú, Pero sólo una vez.

Hay algunas maneras de hacer más eficaz esta caché y ayudar al servidor al mismo tiempo:

  • Poner en una regla que la caché"cookie" es válida para un mínimo de 24 horas o algunos otros plazos. Mientras no hay ninguna cookie caducada, usar copias instantáneas de menú de la cookie y nunca golpeó el servidor.

Bueno... eso es lo que vienen a la mente ahora :). 

Si alguien tiene alguna idea inteligente aquí me encantaría conocerlos.

Y por último – esta técnica puede utilizarse para otras cosas.  Página de mi cliente tiene un número de cosas basadas en datos de varias páginas, muchos de ellos cambiando relativamente raramente (como una vez por semana o una vez al mes).  Si destino áreas específicas de la funcionalidad, Puedes darle una interfaz de usuario más sensible tirando de contenido de la tienda local de galleta y procesamiento inmediato.  Se siente más rápido para el usuario incluso si no estás salvando el servidor cualquier ciclos.  Te puede Guarde los ciclos del servidor por decidir sobre algunas condiciones y disparadores para invalidar esta caché local cookie.  Eso es todo situacional artístico y verdad lo más divertido :). 

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin