Tag Archives: JavaScript

Rapid şi uşor: Creaţi un sit SharePoint, utilizând restul

Există o mulţime de resurse în jurul care arată cum să facă acest lucru, dar nu am putut găsi o cuprinzătoare-a merge link-ul, Deci, aici suntem.

Puteţi crea un sit SharePoint, utilizând API restul.  Aici este un exemplu complet coapte:

<!--
    SiteRequestForm.html: Colecta informaţii şi de a crea un site pentru utilizator.
-->

<Centrul>
<tabel>
    <TR>
        <TD>Numele site-ului:</TD>
        <TD><intrare tip= "text" nume= "SiteName" ID-ul= "SiteName" /></TD>
    </TR>
    <TR>
        <TD ColSpan= "2">
            <intrare tip= "submit" ID-ul= "CreateSiteButton" valoarea= "Creaţi site-ul" />
        </TD>
    </TR>
</tabel>
</Centrul>

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

<script-ul>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametrii": {
                __metadata: { "tip de": "SP.WebInfoCreationInformation" },
                URL-ul: "Paultest1",
                Titlul: "Paultest1",
                Descriere: "creat de restul web de Paul!",
                Limba: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: fals
            }
    },

    createSite: funcţia () {

        jQuery.support.cors = adevărat;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").vasilica();
        
        $.Ajax({
            URL-ul: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            metoda: "POST",

            anteturi: {
                "Accept": "cerere/json; Odata = verbose",
                "content-type": "cerere/json;Odata = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").vasilica()
            },

            date: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            succesul: funcţia () { alertă("succesul"); },
            eroare: funcţia () { alertă("eroare"); }

        });
    },

    wireUpForm: funcţia () {
        $("#CreateSiteButton").faceţi clic pe(funcţia () {
            alertă("Cale de a încerca şi de a crea site-ul.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script-ul>

Când de succes, tu a lua un pachet de JSON în răspuns ca aceasta:

image

Cheie gândurile mele şi cunoştinţele din acest includ:

  • Această abordare foloseste jQuery.  În cazul meu, mea bibliotecă jQuery este situat în ".../ plugin-uri. "  Veţi dori să schimbe că la punctul de la locaţia dumneavoastră preferat de JQ.
  • Puteţi copia şi lipi acest fragment întreg într-o parte de Editor de conţinut Web pe o pagină, şi ar trebui să funcţioneze bine.  Veţi dori să schimba punctul final al API apel şi asiguraţi-vă de referinţă JQ corect.
  • URL-ul este relativ API dumneavoastră final.  În cazul meu, este crearea sub-site-uri sub https://bigapplesharepoint.com
  • Nu aveţi nevoie pentru a oferi un conţinut de lungime. Unele posturi blog-ul şi MSDN documentul implică faptul că faci, dar sa întâmplat pentru mine automat, care presupun este gestionate de $.ajax apel în sine.
  • Această linie este necesară pentru a evita un răspuns "interzis": "X-RequestDigest": $("#__REQUESTDIGEST").vasilica().  Există alte moduri de a face acest lucru, dar acest lucru este destul de frumos.  Am pierdut link-ul la blog-ul care a furnizat această comandă rapidă.  H/T la tine, misterios blogger!

Mult noroc şi sper că acest lucru ajută pe cineva.

</scop>

undefinedAboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Simplă şi rapidă: SharePoint restul apela numai revine 100 Înregistrări

Am fost de lucru pe un site public cu care se confruntă pentru practica mea de SharePoint aici în New York şi se foloseşte o mulţime de JavaScript şi restul apeluri pentru a afişa conţinut.

În timpul dezvoltării magistrala, Creează un set de date mici, cu doar 10 sau aşa rânduri dintr-o listă particularizată şi apelurile mele restul toate trase de acolo.  O dată am întâlnit lista pentru a avea câteva sute de rânduri de date pentru a testa pentru creşterea anticipată, Am constatat că am fost obtinerea exact 100 rânduri s-a întors înapoi pe apelurile mele de restul.

Acesta este un lucru foarte simplu la adresa.  În cazul meu (şi cred că în majoritatea cazurilor), implicit restul numeşte SharePoint (şi, eventual, ca un standard în industrie?) reveni 100 rânduri.  Pentru a reveni mai mult implicit, utilizaţi parametrul $top apel, ca şi în:

IA /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elemente?$Selectaţi = ID,Titlul,Categorii/titlu,Blog_x0020_Author/titlu,DatePublished,BlogSummary&$Expand = Blog_x0020_Author,Categorii&$filtru =&$sus = 9999

Am luat 9999 în acest caz, deoarece ştiu că growth-wise, acolo nu va fi mai mult 200 sau astfel încât rândurile adăugate la această listă într-un an.  În cazul în care acesta devine dizgraţios, putem implementa unele paginare în jos pe drum.

</scop>

undefinedAboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Bietul om pe cache în JavaScript

[TL;DR versiune: utilizează module cookie pentru a stoca rezultatele apeluri async; face rezultatele de ultimele apeluri async imediat şi apoi le valida după pagină de încărcare.]

Am fost de lucru pe site-ul SharePoint intranet pentru un client care dispune de, Printre alte lucruri, o navigare secundara stilizate ale căror opţiuni de meniu sunt gestionate prin intermediul o listă particularizată vechi regulate.  Ideea este că clientul ajunge la site-ul "lor" meniu de control fără a afecta sau afectat de navigaţie globală pus de acesta.

(este ceva incredibil subversiv despre adăugarea unui CEWP care indică spre un fişier HTML care încarcă unele CSS şi JS pentru a modifica fundamental aproape totul despre comportamentul unui site... dar asta e pentru un alt post)

Codul pentru acest destul de simplu:

Inflamat la faţa locului aici este că de fiecare dată când cineva loveşte una din paginile site-ului, browser de web care utilizatorul este ajungând pentru a obţine elemente din listă.  Odată ce dev este completă şi testare a dovedit lucruri pentru a fi stabil şi complete, acest apel este necesar mai mult 99% de timp din meniul rareori modificări.  De asemenea, are un efect ciudat UI, care este comună în această lume nouă curajos de hiper-ajaxy site-uri web-pagina face şi abia apoi meniul render.  Este de nervozitate şi distrag atenţia, în opinia mea.  Şi nervozitate. Deci, cache-ul. 

Am modificat logica thusly:

  • Uita-te pentru un cookie în browser-ul care conţine meniul, am citit-o ultima
    • Dacă a întemeia, face imediat.  Nu aşteptaţi pentru ca pagina să termin de încărcare.  (Aveţi nevoie să vă asiguraţi că codul HTML este plasat strategic aici, dar nu este greu pentru a face).
  • Aşteptaţi pentru ca pagina să termin de încărcare şi să facă o asincron apel pentru a încărca până elementele de meniu dintr-o listă utilizând restul sau lists.asmx sau orice altceva
  • Compara ceea ce am primit împotriva cookie
    • Dacă se potriveşte, opreşte-te
    • În caz contrar, folosind jQuery, dinamic popula o grămadă, dacă <li>pe într-o <ul>
  • Utiliza CSS pentru a face toate formatările
  • Profit!

Unii dintre voi sunt de gând să spun, "Hei! nu există nici o reală în cache întâmplă aici deoarece sunteţi de lectură meniul oricum fiecare dată.”  Si ai dreptate-nu sunt oferindu-server nici un fel de pauza.  Dar pentru că apelul este asincron şi se întâmplă după ce pagina iniţială HTML payload face complet, se "simte" mai receptiv la utilizator.  Meniul redă destul de mult ca pagina atrage.  Dacă meniul se intampla la schimbare, utilizatorul este supus la o nervozitate re-trage din meniul, dar numai ca o singură dată.

Există câteva modalităţi de a face acest cache-ul mai eficientă şi de a ajuta server în acelaşi timp:

  • Pune într-o regulă că cache-ul"cookie" este valabil pentru un minim de 24 ore sau unele alt interval de timp. Atâta timp cât nu există nici un cookie-ul expirat, utilizează modulul cookie meniu instantaneu şi niciodată nu a lovit server.

Ei bine... asta e tot ce vin in minte acum :). 

Dacă cineva are vreo idee inteligent aici mi-ar plăcea să le cunoască.

Şi în fine – aceasta tehnica poate fi folosit pentru alte chestii.  Acest client are o serie de lucruri bazate pe date despre diverse pagini, mulţi dintre ei schimbare relativ rar (ca o dată pe săptămână sau o dată pe lună).  Dacă vizaţi domenii specifice de funcţionalitate, puteţi da o mai receptiv UI trăgând conţinut la magazinul local cookie şi redare imediat.  Se simte mai repede utilizatorului, chiar dacă nu salvaţi server orice cicluri.  Tu poate salvaţi în cicluri de server de decide cu privire la unele condiţii şi declanşează pentru a anula acest cache-ul local cookie.  Care este toate situaţionale şi artsy chestii şi într-adevăr cel mai distractiv :). 

</scop>

undefinedAboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin