Tag Archives: JavaScript

Ràpid i fàcil: Crear un lloc del SharePoint utilitzant la resta

Hi ha un munt de recursos al voltant d'aquest espectacle com fer això, però no podria trobar un enllaç complet anar a, Així que aquí estem.

Vostè pot crear un lloc del SharePoint utilitzant l'API de resta.  Heus aquí un exemple plenament al forn:

<!--
    SiteRequestForm.html: Recollir informació i crear un lloc per a l'usuari.
-->

<Centre>
<taula>
    <tr>
        <TD>Nom del lloc:</TD>
        <TD><entrada tipus= "text" nom= "SiteName" ID= "SiteName" /></TD>
    </tr>
    <tr>
        <TD colspan= 2">
            <entrada tipus= "enviar" ID= «CreateSiteButton" valor= "Crear un portal" />
        </TD>
    </tr>
</taula>
</Centre>

<script src="../Plugins/jQuery-1.11.0.min.js"></script>

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "paràmetres": {
                __metadata: { tipus"": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Títol: "Paultest1",
                Descripció: "resta creació web per Paul!",
                Llengua: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: fals
            }
    },

    createSite: funció () {

        jQuery.support.cors = True;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            mètode: CORREU"",

            capçaleres: {
                "accepta": "application/json; OData = depuraci ≤",
                "content-type": "application/json;OData = depuraci ≤",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            dades: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            èxit: funció () { alerta("l'èxit"); },
            error: funció () { alerta("error"); }

        });
    },

    wireUpForm: funció () {
        $("#CreateSiteButton").feu clic a(funció () {
            alerta("Punt de provar i crear el lloc.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Quan l'èxit, s'obté un paquet JSON en resposta com aquesta:

image

Meves idees claus i aprenentatges d'aquest inclouen:

  • Aquest enfocament utilitza jQuery.  En el meu cas, la meva llibreria jQuery està situat a ".../ plugins. "  Voldrà canviar això perquè apunti a la seva localització favorita JQ.
  • Podeu copiar i enganxar aquest fragment tot a Editor continguts Part Web en una pàgina i hauria de funcionar just bé.  Voldrà canviar el punt final de la crida d'API i assegureu-vos que referència JQ correctament.
  • La URL és relativa a l'extrem del seu API.  En el meu cas, està creant subllocs sota https://bigapplesharepoint.com
  • No cal que facilitis una llargada de contingut. Alguns correus de blog i MSDN document implica que fas, però va passar per a mi automàticament, que assumeixo està sent manejada per la crida de .ajax $ propi.
  • Aquesta línia és necessària per evitar una resposta "prohibida": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Hi ha altres maneres de fer-ho, però això és força bonic.  He perdut l'enllaç al bloc que proporciona aquesta drecera.  / H T li, blogger misteriós!

Bona sort i espero que això ajudi a algú.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Ràpid i senzill: RESTA del SharePoint crida únics devolucions 100 Registres

He estat treballant en una web pública davant de la meva pràctica de SharePoint aquí en Nova York i que utilitza una gran quantitat de trucades JavaScript i resta per mostrar contingut.

Durant el desenvolupament i, Puc crear un petit conjunt de dades amb només 10 o tan estirats files en una llista personalitzada i meves trucades resta totes des d'allà.  Un cop em vaig trobar amb la llista de tenir uns cent files de dades a prova per al creixement esperat, Em va semblar que estava aconseguint exactament 100 files tornar enrere damunt les meves trucades resta.

Això és una cosa molt simple d'adreça.  En el meu cas (i crec que en la majoria dels casos), l'omissió resta trucades a SharePoint (i possiblement com un estàndard de la indústria?) retorn 100 files.  Per tornar més que l'omissió, Utilitzeu el paràmetre $top la seva trucada, com a:

OBTENIR /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elements?$Seleccioneu = ID,Títol,Categories/títol,Blog_x0020_Author/títol,DatePublished,BlogSummary&$ampliar = Blog_x0020_Author,Categories&$filtre =&$part superior = 9999

Triava 9999 en aquest cas ja que sé que growth-wise, no hi haurà més de 200 o tan files afegides a aquesta llista en un any.  Si es converteix en endintre, podem implementar alguna paginació en el camí.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Home pobre de memòria cau en JavaScript

[TL;DR versió: utilitza cookies per emmagatzemar els resultats de les trucades asíncrona; representar els resultats dels darrers asíncrona trucades immediatament i validar-los llavors després de càrrega de pàgina.]

He estat treballant en lloc d'intranet del SharePoint per a un client que inclou, entre altres coses, una estilitzada Navegació secundària les opcions del menú són gestionats mitjançant una llista personalitzada vell regular.  La idea és que el client obté controlar el menú del "seu" lloc sense afectar o estar afectat per la navegació per.

(hi ha alguna cosa increïblement subversiu sobre com afegir un CEWP que apunta a un fitxer HTML que carrega alguns CSS i JS per alterar fonamentalment gairebé tot sobre el comportament d'un lloc... però això és per a un altre lloc)

El codi per a aquesta força simples:

L'adolorit lloc aquí és que cada vegada que algú colpeja una de les pàgines del lloc, navegador web de l'usuari és arribar a tenir elements de la llista.  Un cop dev és completa i proves ha demostrat coses de ser estable i complet, Aquesta convocatòria és innecessari més de 99% de l'època ja que poques vegades la carta canvia.  També disposa d'un estrany efecte UI que és comú en aquest món nou i valent de llocs web hiper-ajaxy-rendeix la pàgina i llavors només fa rendir el menú.  És nerviós i distracció en la meva opinió.  I nerviós. Així, memòria cau. 

He modificat la lògica així:

  • Buscar una galeta al navegador que conté el menú com darrera llegir-lo
    • Si hem trobat, representar-lo immediatament.  No esperi per a acabar de carregar la pàgina.  (Vostè necessita assegurar-se que el seu HTML estratègicament situat aquí, però no és difícil de fer).
  • Espereu que la pàgina d'acabar de carregar i fer un asíncrona truqueu per carregar els elements de menú d'una llista, utilitzant la resta o lists.asmx o el que sigui
  • Comparar què aconseguia contra la galeta
    • Si coincideix amb el, PARADA
    • En cas contrari, utilitzant jQuery, poblar dinàmicament un grapat de si <li>és en una <ul>
  • Utilitzar CSS per fer tot el format
  • Benefici!

Alguns de vostès estan anant a dir, "Escolta! no hi ha cap veritable memòria cau passant aquí ja que vostè està llegint la carta de totes maneres cada vegada.”  I tens raó-no estic donant el servidor cap mena de descans.  Però perquè la crida és asíncrona i passa després la pàgina inicial càrrega HTML totalment rendeix, "se sent" més sensible a l'usuari.  El menú rendeix força tant com dibuixa la pàgina.  Si el menú passa al canvi, l'usuari se sotmet a un nerviós repetir el sorteig del menú, però només que una vegada.

Hi ha algunes maneres de fer aquesta memòria cau més eficaç i ajudar el servidor al mateix temps:

  • Posar en una regla que el "amagatall de galetes" és vàlida per un mínim de 24 hores o algun timeframe altre. Mentre no hi ha galetes expirats, utilitzar instantània de la galeta menú i mai va colpejar el servidor.

Bé... això és tot el que vénen a la ment ara mateix :). 

Si algú té alguna idea intel ligent aquí jo estimaria saber-los.

I finalment – aquesta tècnica pot ser utilitzat per altres coses.  Pàgina del aquest client té una sèrie de coses basades en dades sobre diferents pàgines, molts d'ells canviar relativament poques vegades (com un cop per setmana o un cop al mes).  Si la destinació de les àrees específiques de funcionalitat, es pot donar un UI més sensible per tirant contingut des de la botiga local de galeta i rendició immediatament.  Que se sent més ràpid a l'usuari fins i tot si vostè no els està salvant el servidor qualsevol cicles.  Vostè pot salvar els cicles de servidor per decidir sobre algunes condicions i factors desencadenants que invalida aquest amagatall de galetes local.  Això és tot situacional i artístic matèria i realment el més divertit :). 

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin