Tag-arkiver: JavaScript

Hurtig og nem: Oprette et SharePoint-websted ved hjælp af resten

Der er en masse ressourcer omkring at vise hvordan man gør det, men jeg kunne ikke finde en omfattende gå til link, så her er vi.

Du kan oprette et SharePoint-websted ved hjælp af API'EN resten.  Her er en fuldt bagt eksempel:

<!--
    SiteRequestForm.html: Indsamle oplysninger og oprette et websted for brugeren.
-->

<Center>
<tabel>
    <Tr>
        <TD>Navn på websted:</TD>
        <TD><input type= "tekst" Navn= "SiteName" id= "SiteName" /></TD>
    </Tr>
    <Tr>
        <TD colspan= "2">
            <input type= "Send" id= "CreateSiteButton" værdi= "Opretter webstedet" />
        </TD>
    </Tr>
</tabel>
</Center>

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

<script>
varians CreateSiteLogicContainer = {

    createSiteData: {
            "parametre": {
                __metadata: { "type": "SP.WebInfoCreationInformation" },
                URL-adresse: "Paultest1",
                Titel: "Paultest1",
                Beskrivelse: "resten-skabte web af Paul!",
                Sprog: 1033,
                Webstedsskabelonen: "sts",
                UseUniquePermissions: falsk
            }
    },

    createSite: funktion () {

        jQuery.support.cors = True;

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

            overskrifter: {
                "acceptere": "ansøgning/json; OData = verbose",
                "content-type": "ansøgning/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            succes: funktion () { alarm("succes"); },
            fejl: funktion () { alarm("fejl"); }

        });
    },

    wireUpForm: funktion () {
        $("#CreateSiteButton").Klik på(funktion () {
            alarm("Ved at prøve og oprette webstedet.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Når det lykkes, du får en JSON pakke som svar på denne:

image

Min centrale tanker og læringer fra denne omfatter:

  • Denne fremgangsmåde bruger jQuery.  I mit tilfælde, mit jQuery biblioteket er beliggende i ".../ plugins. "  Du vil gerne ændre det til at pege på din foretrukne JQ placering.
  • Du kan kopiere og indsætte det hele kodestykket i webdelen Indholdsredigering på en side og skal det fungere bare fint.  Du ønsker at ændre slutpunktet for API-kald og sørg for du reference JQ korrekt.
  • URL-adressen er i forhold til din API slutpunkt.  I mit tilfælde, Det er at oprette underordnede websteder under https://bigapplesharepoint.com
  • Du behøver ikke at give en indhold-længde. Nogle blogindlæg og MSDN dokument indebærer, at du gør, men der skete for mig automatisk, som jeg formoder bliver håndteret af $.ajax opkaldet, selv.
  • Denne linje er påkrævet for at undgå en "forbudte" svar: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Der er andre måder at gøre det, men det er ret nice.  Jeg har mistet linket til blog, leveres denne genvej.  H/T til dig, mystiske blogger!

Held og lykke og håber det hjælper nogen.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og enkel: SharePoint resten kalder kun returnerer 100 Poster

Jeg har arbejdet på et offentligt modstående websted for min SharePoint praksis her i New York og det bruger en masse JavaScript og resten opkald til at vise indhold.

Under hovedlinjen udvikling, Jeg oprette en lille datasæt med lige 10 eller så rækker i en brugerdefineret liste og min resten opfordrer alle trak derfra.  En gang jeg stødte op på listen for at have et par hundrede rækker af data til at teste for forventede vækst, Jeg fandt, at jeg fik præcis 100 rækker, der returneres tilbage på min hvile opkald.

Dette er en meget simpel ting at adresse.  I mit tilfælde (og jeg tror i de fleste tilfælde), standard resten opkald til SharePoint (og muligvis som en industri standard?) tilbagevenden 100 rækker.  At vende tilbage mere end standard, Brug parameteren $top på dit opkald, som i:

FÅ /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elementer?$Vælg = ID,Titel,Kategorier/titel,Blog_x0020_Author/titel,DatePublished,BlogSummary&$Udvid = Blog_x0020_Author,Kategorier&$filter =&$Top = 9999

Jeg tog 9999 i dette tilfælde da jeg ved at growth-wise, der vil ikke være mere end 200 eller så rækker føjes til denne liste i et år.  Hvis det bliver klodset, Vi kan gennemføre nogle personsøgning på vej.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Fattig mand Caching i JavaScript

[TL;DR version: Brug cookies til at gemme resultaterne af async opkald; gengive resultaterne af tidligere async opkald straks og derefter validere dem efter side-belastning.]

Jeg har arbejdet på SharePoint intranet site for en klient at funktioner, blandt andet, en stiliseret sekundær navigation hvis menuindstillinger styres via en almindelig gamle brugerdefineret liste.  Ideen er at klienten får lov til at kontrollere menuen "deres" websted uden at påvirke eller påvirkes af den globale navigation sat ud af det.

(der er noget utrolig undergravende om tilføjelse af en CEWP, der peger på en HTML-fil for at indlæse nogle CSS og JS fundamentalt ændre næsten alt om et websteds opførsel... men det er for en anden post)

Koden for denne smukke enkle:

Den sore spot her er, at hver gang nogen hits en af webstedets sider, brugerens webbrowser er at nå ud til at få elementer på listen.  Når dev er komplet og test har bevist ting at være stabil og komplet, denne indkaldelse er unødvendige mere end 99% tid siden menuen sjældent ændres.  Det har også en underlig UI indflydelse, som er almindeligt i denne fagre nye verden af hyper-ajaxy websteder – siden renders og først derefter gør menuen.  Det er nervøs og distraherende efter min mening.  Og nervøs. Så, cachelagring. 

Jeg har ændret logikken thusly:

  • Kigge efter en cookie i den browser, der indeholder menuen, som jeg sidst læste det
    • Hvis fundet, gøre det straks.  Vent ikke til siden for at afslutte læsning.  (Du skal sørge for din HTML er strategisk placeret her, men det er ikke svært at gøre).
  • Vente på siden for at afslutte lastning og gøre en asynkron hidkalde hen til ladning oppe menu artikler på en liste ved hjælp af resten eller lists.asmx eller hvad
  • Undersøg hvad jeg fik mod cookie
    • Hvis det passer, Stop
    • Ellers, ved hjælp af jQuery, dynamisk udfylde en bunke, hvis <Li>er i en <UL>
  • Brug CSS til at gøre al formatering
  • Profit!

Nogle af jer vil sige, "hey! der er ingen reel caching vej på her, da du læser menuen alligevel hver eneste gang.”  Og du har ret-jeg vil ikke give serveren nogen form for pause.  Men fordi opkaldet er asynkrone og sker efter siden 's oprindelige HTML nyttelast gengiver fuldt, det føles"" mere lydhøre over for brugeren.  Menuen gør temmelig meget som siden trækker.  Hvis menuen sker til ændringen, brugeren er udsat for en nervøs re-drage i menuen, men kun denne ene gang.

Der er nogle måder at gøre dette caching mere effektivt og hjælpe serveren på samme tid:

  • Sat i en regel at "cookie-cache" er gyldig i mindst 24 timer eller nogle andre tidsramme. Så længe der er ingen udløbet cookie, bruge den cookie menuen øjebliksbillede og aldrig ramte serveren.

Tja... det er alt, der kommer til at tænke lige nu :). 

Hvis nogen har nogen kloge tanker her ville jeg elske at kende dem.

Og endelig – denne teknik kan bruges til andre ting.  Denne klient side har en række datastyrede ting på forskellige sider, mange af dem ændre relativt sjældent (ligesom en gang om ugen eller en gang om måneden).  Hvis du er målrettet mod specifikke områder af funktionalitet, Du kan give en mere lydhør UI ved at trække indholdet fra den lokale cookie butik og rendering straks.  Det føles hurtigere til brugeren selv hvis du ikke gemmer serveren enhver cyklusser.  Du kan Gem serveren cyklusser ved at beslutte på visse betingelser og udløsere til at afkræfte denne lokale cookie cache.  Det er alle situationsbestemt og kunstnerkvarteret ting og virkelig den mest sjov :). 

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin