Tag-Archive: JavaScript

Schnell und einfach: Erstellen einer SharePoint-Website, die Verwendung von REST

Gibt es eine Menge Ressourcen um, die zeigen, wie Sie dies tun, aber ich konnte einen umfassenden gehe-zu-Link finden, Hier sind wir.

Sie können eine SharePoint-Website mithilfe der REST-API erstellen.  Hier ist ein vollständig gebackene Beispiel:

<!--
    SiteRequestForm.html: Informationen sammeln und Erstellen einer Website für den Benutzer.
-->

<Zentrum>
<Tabelle>
    <TR>
        <TD>Site-Name:</TD>
        <TD><Eingang Typ= "text" Name= "SiteName" ID= "SiteName" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <Eingang Typ= "submit" ID= "CreateSiteButton" Wert= "Erstellen die Website" />
        </TD>
    </TR>
</Tabelle>
</Zentrum>

<Skript src="../Plugins/jQuery-1.11.0.Min.js"></Skript>

<Skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "Parameter": {
                __metadata: { "Typ": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Titel: "Paultest1",
                Beschreibung: "Rest-erstellt Web von Paul!",
                Sprache: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: falsch
            }
    },

    createSite: Funktion () {

        jQuery.support.cors = wahr;

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

            Header: {
                "akzeptieren": "Application/json; promoveaza = verbose",
                "Content-type": "Application/json;promoveaza = verbose",
                "X-RequestDigest": $(#__REQUESTDIGEST"").Val()
            },

            Daten: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            Erfolg: Funktion () { Warnung("Erfolg"); },
            Fehler: Funktion () { Warnung("Fehler"); }

        });
    },

    wireUpForm: Funktion () {
        $("#CreateSiteButton").Klicken Sie auf(Funktion () {
            Warnung("Zu versuchen und Erstellen der Site.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</Skript>

Wenn Sie erfolgreich sind, Sie erhalten ein JSON-Paket als Antwort wie folgt:

image

Meine wichtigsten Gedanken und Erkenntnisse aus diesem include:

  • Dieser Ansatz verwendet jQuery.  In meinem Fall, meine jQuery-Bibliothek befindet sich im ".../ Plugins. "  Sie wollen das darauf zu Ihrem Lieblings-JQ-Standort ändern.
  • Sie können kopieren und fügen Sie ganze Ausschnitt in einem Inhalts-Editor-Webpart auf einer Seite und es sollte gut funktionieren.  Sie wollen den Endpunkt der API-Aufruf zu ändern und sicherstellen, dass Sie korrekt JQ verweisen.
  • Die URL ist relativ Ihre API-Endpunkt.  In meinem Fall, Es ist Sub-Sites unter erstellen. https://bigapplesharepoint.com
  • Du musst eine Inhaltslänge bieten. Einige Blog-Posts und MSDN Dokument impliziert, dass Sie tun, aber geschah für mich automatisch, welche ich annehme werden durch den Aufruf der $-Schnipsel selbst behandelt.
  • Diese Linie wird benötigt, um eine "Verbotene" Antwort zu vermeiden: "X-RequestDigest": $(#__REQUESTDIGEST"").Val().  Es gibt andere Wege, es zu tun, aber das ist ziemlich nett.  Ich habe den Link zum Blog verloren, die diese Verknüpfung bereitgestellt.  H/T auf Sie, geheimnisvolle blogger!

Viel Glück und hoffe, dass dies jemand hilft.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Schnell und einfach: SharePoint REST rufen nur gibt 100 Datensätze

Ich habe an einer öffentlichen ausgerichteten Website für meine SharePoint-Praxis hier in gearbeitet New York und verwendet eine Menge JavaScript und REST Anrufe auf Inhalt anzeigen.

Während der Hauptstrecke Entwicklung, Ich erstelle eine kleine Dataset mit nur 10 oder Zeilen in einer benutzerdefinierten Liste und meine REST-Anrufe alle so gezogen, von dort.  Einmal traf ich auf der Liste, um ein paar hundert Zeilen von Daten zum Testen für das erwartete Wachstum haben, Ich fand, dass ich genau bekam 100 wieder auf meine Anrufe REST zurückgegebenen Zeilen.

Dies ist eine sehr einfache Sache zu Adresse.  In meinem Fall (und ich glaube, in den meisten Fällen), Standardmäßig ruft REST in SharePoint (und möglicherweise als Branchenstandard?) Rückkehr 100 Zeilen.  Mehr als der Standardwert zurückgegeben, mithilfe des Parameters $top auf Ihren Anruf, wie in:

/Insights Dev/_api/web/lists/GetByTitle zu erhalten('MockBlog')/Elemente?$Wählen Sie = ID,Titel,Kategorien/Titel,Blog_x0020_Author/Titel,DatePublished,BlogSummary&$Erweitern Sie = Blog_x0020_Author,Kategorien&$Filter =&$oben = 9999

Ich nahm 9999 in diesem Fall da ich weiß, die growth-wise, Es werden nicht mehr als 200 oder also Zeilen in einem Jahr in diese Liste aufgenommen.  Wenn es plump wird, Wir realisieren eine Auslagerungsdatei auf der Straße.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Armer Mann ist in JavaScript Zwischenspeichern.

[TL;DR-version: Verwenden Sie Cookies zum Speichern der Ergebnisse der asynchrone Aufrufe; die Ergebnisse der letzten asynchrone Aufrufe sofort gerendert, und überprüfen sie dann nach dem Laden der Seite.]

Ich habe auf SharePoint-Intranet-Site für einen Client, dass die Funktionen gearbeitet, unter anderem, eine stilisierte Sekundärnavigation dessen Menüoptionen über eine normale alte benutzerdefinierte Liste verwaltet werden.  Die Idee besteht darin, dass der Client "ihre" Site-Menü steuern, ohne zu beeinflussen oder durch die globale Navigation löschte dadurch beeinträchtigt wird.

(Es ist etwas unglaublich subversiven zum Hinzufügen eines CEWP, der auf einer HTML-Datei verweist, das lädt einige CSS und JS grundlegend verändern fast alles über eine Website Verhalten... aber das ist für einen anderen Beitrag)

Der Code für diese ziemlich einfach:

Die Wunde Punkt hier ist das jedes Mal, wenn jemand eine der Seiten hits, Web-Browser des Benutzers greift Elemente aus der Liste abgerufen.  Sobald Dev vollständig und Tests sind bewährt Dinge zu stabil und vollständig sein, Dieser Aufruf ist unnötig mehr als 99% die Zeit, da das Menü nur selten ändert.  Es hat auch einen seltsamen UI Affekt, der in dieser schönen neuen Welt von hyper-Ajaxy Websites üblich ist – die Seite macht und erst dann rendert das Menü.  Es ist nervös und störend aus meiner Sicht.  Und nervös. Also, Zwischenspeichern. 

Ich änderte die Logik Wasserverbrauch:

  • Suchen Sie ein Cookie im Browser, der Menü enthält, wie ich es zuletzt gelesen
    • Wenn gefunden, machen Sie es sofort.  Warten Sie nicht auf die Seite geladen.  (Sie müssen sicherstellen, dass Ihre HTML hier strategisch ist, aber es ist nicht schwer zu tun).
  • Warten Sie, bis die Seite fertig geladen und machen ein Async aufrufen, um Menüelemente aus einer Liste mit REST oder lists.asmx oder was auch immer zu laden
  • Vergleichen Sie, was ich mit dem cookie
    • Wenn es passt, STOP
    • Ansonsten, mithilfe von jQuery, ein paar dynamisch zu füllen, wenn <Li>ist in einem <UL>
  • Verwenden Sie CSS, um die Formatierung zu tun
  • Gewinn!

Einige von Ihnen werden sagen, "hey! Es gibt kein richtiger Zwischenspeichern hier da du sowieso das Menü liest jedes Mal.”  Und du hast Recht-ich gebe nicht dem Server jede Art von Bruch.  Aber weil der Aufruf asynchron und geschieht, nachdem die Seite erste ist rendert HTML-Nutzlast voll, es "fühlt"sich stärker auf den Benutzer.  Das Menü macht ziemlich viel wie die Seite zieht.  Wenn das Menü zur Änderung geschieht, der Benutzer wird eine unruhige neu zu ziehen des Menüs unterzogen, aber nur dieses eine Mal.

Es gibt einige Möglichkeiten, um diese Zwischenspeicherung effizienter und helfen den Server zur gleichen Zeit:

  • Setzen Sie in der Regel, dass der "Cookiecache" gültig für einen Mindestaufenthalt von ist 24 Stunden oder einige andere Zeitrahmen. Solange es keine abgelaufene cookie, Verwenden Sie das Cookie Menü Snapshot und nie schlagen Sie den server.

Nun... das ist alles, die was gerade in den Sinn kommen :). 

Wenn jemand hier eine clevere Idee hat würde ich gerne kennenlernen.

Und schließlich – kann diese Technik für andere Sachen verwendet werden.  Dieser Client-Seite hat eine Reihe von datengesteuerten Dingen auf verschiedenen Seiten, viele von ihnen ändern relativ selten (wie einmal pro Woche oder einmal im Monat).  Wenn Sie bestimmte Bereiche der Funktionalität gezielt, Sie können eine reaktionsschnellere Benutzeroberfläche geben, ziehen Inhalte aus dem lokalen Cookie laden und Rendern sofort.  Es fühlt sich schneller an den Benutzer, auch wenn Sie nicht den Server Schleifen speichern.  Sie können sparen Sie die Serverzyklen bei Entscheidung über einige Bedingungen und Auslöser dieser lokalen Cookiecache für ungültig erklären.  Das ist alles situationsabhängig und künstlerisch Zeug und wirklich am meisten Spaß :). 

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin