marcatori archivi: JavaScript

Facile e veloce: Creare un sito di SharePoint utilizzando il resto

Ci è un sacco di risorse intorno che mostrano come fare questo, ma non riuscivo a trovare un link completo go-a, così siamo qui.

È possibile creare un sito di SharePoint utilizzando l'API REST.  Ecco un esempio completamente al forno:

<!--
    SiteRequestForm.html: Raccogliere informazioni e creare un sito per l'utente.
-->

<centro>
<tabella>
    <TR>
        <TD>Nome del sito:</TD>
        <TD><ingresso tipo= "testo" nome= "NomeSito" Identificazione= "NomeSito" /></TD>
    </TR>
    <TR>
        <TD colspan= 2"">
            <ingresso tipo= "Invia" Identificazione= CreateSiteButton"" valore= "Crea il sito" />
        </TD>
    </TR>
</tabella>
</centro>

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

<script di>
var CreateSiteLogicContainer = {

    createSiteData: {
            «parametri": {
                __metadata: { "tipo": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Titolo: "Paultest1",
                Descrizione: "web resto-creato da Paolo!",
                Lingua: 1033,
                WebTemplate: m."",
                UseUniquePermissions: falso
            }
    },

    createSite: funzione () {

        jQuery.support.cors = true;

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

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

            dati: Stringify(CreateSiteLogicContainer.createSiteData),

            successo: funzione () { avviso("il successo"); },
            errore: funzione () { avviso("errore"); }

        });
    },

    wireUpForm: funzione () {
        $("#CreateSiteButton").fare clic su(funzione () {
            avviso("Per cercare di creare il sito.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script di>

Quando è successo, si ottiene un pacchetto JSON in risposta come questo:

image

I miei pensieri chiavi e apprendimenti da questo includono:

  • Questo approccio utilizza jQuery.  Nel mio caso, mia libreria jQuery si trova in ".../ plugin. "  Ti consigliamo di cambiare che per puntare alla tua posizione preferita di JQ.
  • È possibile copiare e incollare quel frammento intero in una Web Editor contenuto Part in una pagina e dovrebbe funzionare bene.  Ti consigliamo di cambiare il punto di fine della chiamata API e assicurarsi che si fa riferimento JQ correttamente.
  • L'URL è relativo dell'endpoint di API.  Nel mio caso, è la creazione di siti secondari sotto https://bigapplesharepoint.com
  • Non è necessario fornire una contenuto-lunghezza. Alcuni blog e MSDN documento implica che si fa, ma è successo per me automaticamente, che presumo viene gestita dalla chiamata del AJAX $.
  • Questa linea è necessaria al fine di evitare una risposta "proibita": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Ci sono altri modi per farlo, ma questo è abbastanza piacevole.  Ho perso il link al blog che ha fornito questa scorciatoia.  H/T a voi, misteriosa blogger!

Buona fortuna e spero che questo aiuti qualcuno fuori.

</fine>

undefinedIscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Semplice e veloce: SharePoint resto chiamare solo ritorni 100 Record

Sto lavorando su un sito web di fronte pubblico per la mia pratica di SharePoint qui in New York e utilizza un sacco di chiamate JavaScript e resto per mostrare i contenuti.

Durante lo sviluppo del mainline, Creare un piccolo set di dati con solo 10 o così le righe in un elenco personalizzato e tutte le mie chiamate resto tirato da lì.  Una volta ho urtato l'elenco per avere qualche centinaia di righe di dati per il test di crescita atteso, Ho trovato che mi stavo esattamente 100 righe restituite indietro sulle mie chiamate resto.

Questa è una cosa molto semplice indirizzo.  Nel mio caso (e credo che nella maggior parte dei casi), l'impostazione predefinita resto chiama per SharePoint (e possibilmente come uno standard industriale?) ritorno 100 righe.  Per restituire più di default, utilizzare il parametro $top su chiamata, come in:

OTTENERE /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elementi?$selezionare = ID,Titolo,Categorie/titolo,Blog_x0020_Author/titolo,DatePublished,BlogSummary&$Espandere = Blog_x0020_Author,Categorie&$filtro =&$Top = 9999

Ho scelto 9999 in questo caso da allora so che growth-wise, non ci sarà più di 200 o così aggiunte a questo elenco in un anno.  Se diventa sgraziato, Noi possiamo attuare qualche spostamento lungo la strada.

</fine>

undefinedIscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Povero uomo di memorizzazione nella cache in JavaScript

[TL;Versione DR: utilizzare i cookie per memorizzare i risultati delle chiamate asincrone; rendere immediatamente i risultati delle precedenti chiamate asincrone e poi convalidarli dopo il caricamento della pagina.]

Sto lavorando sul sito intranet SharePoint per un cliente che caratterizza, tra le altre cose, una navigazione secondaria stilizzato cui opzioni di menu sono gestiti tramite un elenco personalizzato di vecchio regolare.  L'idea è che il cliente ottiene controllare il menu del "loro" sito senza influenzare o colpiti dalla navigazione globale messa da esso.

(c'è qualcosa di incredibilmente sovversiva sull'aggiunta di un CEWP che punta a un file HTML che carica alcuni CSS e JS per modificare sostanzialmente quasi tutto ciò che riguarda il comportamento di un sito... ma che è per un altro post)

Il codice per questo abbastanza semplice:

Qui il punto dolente è che ogni volta che qualcuno colpisce una delle pagine del sito, browser web dell'utente è protesa per ottenere elementi dall'elenco.  Una volta dev è completa e test ha dimostrato le cose per essere stabile e completa, Questa chiamata è inutile più di 99% del tempo poiché il menu cambia raramente.  Ha anche un effetto strano di UI che è comune in questo mondo nuovo iper-ajaxy siti web – il rendering della pagina e solo allora esegue il rendering dal menu.  È nervosa e fastidioso a mio parere.  E nervosa. Così, memorizzazione nella cache. 

Ho modificato la logica di questa convenzione:

  • Cercare un cookie nel browser che contiene il menu come ultima leggerla
    • Se trovato, rendere immediatamente.  Non aspettare che la pagina completare il caricamento.  (È necessario assicurarsi che il codice HTML è strategicamente collocato qui, ma non è difficile da fare).
  • Attendere la pagina di finire il caricamento e fare un async chiamare per caricare le voci di menu da un elenco utilizzando il resto o lists o qualunque
  • Confrontare quello che ho ottenuto con il cookie
    • Se corrisponde a, FERMATA
    • In caso contrario, usando jQuery, popolare dinamicamente un mazzo se <li>di in un <UL>
  • Utilizzare i CSS per fare la formattazione
  • Profitto!

Alcuni di voi stanno andando a dire, "Ehi! non non c'è nessun reale cache succedendo qui dato che stai leggendo il menu comunque ogni singola volta.”  E hai ragione-non sto dando il server qualsiasi tipo di pausa.  Ma perché la chiamata è async e accade dopo che la pagina iniziale di payload HTML rende pienamente, ci si "sente" più reattivo all'utente.  Il menu rende abbastanza tanto come disegna la pagina.  Se il menu succede al cambiamento, l'utente è soggetto a un ri-disegnare nervosa del menu, ma solo che una volta.

Ci sono alcuni modi per rendere più efficace questa memorizzazione nella cache e il server possono aiutare allo stesso tempo:

  • Mettere in una regola che il "cookie cache" è valida per un minimo di 24 ore o qualche altro lasso di tempo. Finchè non non c'è alcun cookie scaduti, utilizzare snapshot menu del cookie e mai colpito il server.

Beh... questo è tutto quello che mi vengono in mente ora :). 

Se qualcuno ha qualche idea intelligente qui mi piacerebbe conoscerli.

E infine – questa tecnica può essere utilizzata per altre cose.  Pagina su questo client ha un certo numero di cose basate su dati sulle varie pagine, molti di loro modifica relativamente raramente (come una volta a settimana o una volta al mese).  Se destinazione specifiche aree di funzionalità, si può dare un'interfaccia utente più reattiva tirando il contenuto dall'archivio locale cookie e rendendo immediatamente.  Ci si sente più velocemente all'utente anche se non si sta salvando il server qualsiasi cicli.  Si può salvare i cicli server decidendo su alcune condizioni e trigger per invalidare questa cache cookie locale.  Che è tutto situazionale e artsy roba e veramente la più divertente :). 

</fine>

undefinedIscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin