Tag Archives: JavaScript

Facile et rapide: Créer un Site SharePoint à l'aide de repos

Il y a beaucoup de ressources autour qui montrent comment procéder, mais je ne pouvais pas trouver un lien complet aller-à, Nous voici donc.

Vous pouvez créer un site SharePoint à l'aide de l'API REST.  Voici un exemple entièrement cuit:

<!--
    SiteRequestForm.html: Recueillir des informations et créer un site pour l'utilisateur.
-->

<Centre>
<table>
    <TR>
        <TD>Nom du site:</TD>
        <TD><entrée type= "texte" nom= SiteName"" ID= SiteName"" /></TD>
    </TR>
    <TR>
        <TD colspan= 2"">
            <entrée type= "submit" ID= "CreateSiteButton" valeur= "Créer le Site" />
        </TD>
    </TR>
</table>
</Centre>

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

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "paramètres": {
                __metadata: { type"": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Titre: "Paultest1",
                Description: "web rest-créé par Paul!",
                Langue: 1033,
                WebTemplate: « sts",
                UseUniquePermissions As Boolean: faux
            }
    },

    createSite: fonction () {

        jQuery.support.cors = True;

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

            en-têtes: {
                "accepter": « application/json; OData = verbose",
                "content-type": « application/json;OData = verbose",
                « X-RequestDigest": $(« #__REQUESTDIGEST").Val()
            },

            données: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            succès: fonction () { alerte("la réussite"); },
            erreur: fonction () { alerte("erreur"); }

        });
    },

    wireUpForm: fonction () {
        $("#CreateSiteButton").Cliquez sur(fonction () {
            alerte("Sur le point d'essayer et de créer le site.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Lorsque réussie, vous obtenez un paquet JSON en réponse à ceci:

image

Mes pensées principales et les enseignements de cette comprennent:

  • Cette approche utilise jQuery.  Dans mon cas, ma bibliothèque jQuery est situé dans ".../ plugins. "  Vous aurez envie de changer cela pour pointer vers votre emplacement préféré de JQ.
  • Vous pouvez copier et coller cet extrait entier dans un composant WebPart éditeur de contenu sur une page, et il devrait fonctionner parfaitement.  Vous aurez envie de changer le point de fin de l'appel d'API et assurez-vous que vous référencez JQ correctement.
  • L'URL est relative à point de terminaison de l'API.  Dans mon cas, C'est créer des sous-sites sous https://bigapplesharepoint.com
  • Vous n'avez pas besoin de fournir une contenu-longueur. Certains blogs et MSDN document implique que vous faites, mais s'est passé pour moi automatiquement, qui je suppose est géré par l'appel de $.ajax lui-même.
  • Cette ligne est nécessaire pour éviter une réponse "interdite": « X-RequestDigest": $(« #__REQUESTDIGEST").Val().  Il existe d'autres façons de le faire, mais c'est assez agréable.  J'ai perdu le lien de blog qui a fourni ce raccourci.  H/T à vous, mystérieux blogueur!

Bonne chance et espérons que cela aide quelqu'un.

</fin>

undefinedS'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Simple et rapide: SharePoint reste appel seules déclarations 100 Comptes rendus

J'ai travaillé sur un site public face pour ma pratique de SharePoint ici dans New York et il utilise beaucoup d'appels JavaScript et reste pour afficher le contenu.

Au cours du développement de ligne principale, J'ai créer un petit groupe de données avec juste 10 ou alors rangées dans une liste personnalisée et mes appels reste tous tiré de là.  Une fois je suis tombé vers le haut de la liste d'avoir quelques centaines de lignes de données pour tester la croissance anticipée, J'ai trouvé que je voulais en venir exactement 100 lignes retournées retour sur mes appels reste.

Il s'agit d'une chose très simple à l'adresse.  Dans mon cas (et je crois que dans la plupart des cas), la valeur par défaut reste appelle à SharePoint (et peut-être comme un standard de l'industrie?) retour 100 lignes.  Pour retourner plus que la valeur par défaut, Utilisez le paramètre $top lors de votre appel, comme dans:

OBTENIR /Insights Dev/_api/web/lists/GetByTitle(« MockBlog »)/articles?$Sélectionnez = ID,Titre,Catégories/titre,Blog_x0020_Author/titre,DatePublished,BlogSummary&$Développez = Blog_x0020_Author,Catégories&$filtre =&$haut = 9999

J'ai pris 9999 dans ce cas car je sais que growth-wise, Il n'y aura plus de 200 ou alors les lignes ajoutées à cette liste en un an.  S'il devient disgracieux, Nous pouvons mettre en œuvre certains pagination vers le bas de la route.

</fin>

undefinedS'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Pauvre homme de mise en cache en JavaScript

[TL;DR version: utiliser des cookies pour stocker les résultats des appels asynchrones; restituer les résultats des dernières async appels immédiatement et puis validez-les après chargement de la page.]

J'ai travaillé sur le site intranet SharePoint pour un client qui dispose, entre autres choses, une navigation secondaire stylisée dont les options du menu sont gérées via une liste personnalisée vieux ordinaire.  L'idée est que le client obtient contrôler le menu de « leur » site sans affecter ou être affecté par le système mondial de navigation par elle.

(Il y a quelque chose d'incroyablement subversif sur l'ajout d'un CEWP qui pointe vers un fichier HTML qui charge des CSS et JS fondamentalement modifier presque tout sur le comportement d'un site... mais c'est pour un autre poste)

Le code pour cet jolie simple:

Le mal ici spot, c'est que chaque fois que quelqu'un frappe une des pages du site, navigateur web de l'utilisateur tend la main pour obtenir des éléments de la liste.  Lorsque dev est terminée et l'essai a prouvé des choses à être stable et complet, Cet appel n'est pas nécessaire plus de 99% du temps étant donné que le menu change rarement.  Il a aussi un effet bizarre de UI qui est commun dans ce nouveau monde de sites web hyper-ajaxy – rend la page et ensuite seulement le menu rend.  Il est nerveux et distrayant à mon avis.  Et de nervosité. Si, la mise en cache. 

J'ai modifié la logique thusly:

  • Recherchez un cookie dans le navigateur qui contient le menu, comme je l'ai lu dernière
    • Si trouvé, rendent immédiatement.  N'attendez pas la page pour terminer le chargement.  (Vous devez vous assurer que votre code HTML est stratégiquement placé ici, mais ce n'est pas difficile à faire).
  • Attendez que la page pour terminer le chargement et appeler un async pour charger les éléments de menu dans une liste à l'aide de repos ou lists.asmx ou autre
  • Comparer ce que j'ai contre le cookie
    • Si elle correspond, ARRÊT
    • Dans le cas contraire, à l'aide de jQuery, remplir dynamiquement un tas si <Li>les de dans un <UL>
  • Utiliser les CSS pour faire tout le formatage
  • Profit!

Certains d'entre vous vont dire, "Hé! Il n'y a aucune véritable cache passe ici puisque vous lisez le menu quand même à chaque fois.”  Et vous avez raison-je ne remets pas le serveur tout type de rupture.  Mais parce que l'appel est asynchrone et arrive après que la page initiale de la charge utile HTML rend pleinement, il « sent » plus réactif à l'utilisateur.  Le menu rend assez autant que dessine la page.  Si le menu arrive au changement, l'utilisateur est soumis à une re-dessiner de nervosité du menu, mais seulement qu'une fois.

Il existe des moyens pour accroître l'efficacité de cette mise en cache et dépanner le serveur en même temps:

  • Mettre dans une règle que le cache de « cookie » est valable pour un minimum de 24 heures ou quelques autres délais. Tant qu'il n'y a aucun cookie a expiré, Utilisez instantané menu du cookie et ne jamais frapper le serveur.

Eh bien... c'est tout ce qui viennent à l'esprit dès maintenant :). 

Si quelqu'un a des idées intelligentes ici je serais ravi de les connaître.

Et enfin, cette technique peut être utilisée pour d'autres trucs.  Page de ce client a un certain nombre de choses pilotés par les données sur les différentes pages, beaucoup d'entre eux changer relativement rarement (comme une fois par semaine ou une fois par mois).  Si vous ciblez des zones spécifiques de la fonctionnalité, vous pouvez donner une interface utilisateur plus réactive en extraient le contenu du magasin local de cookie et de rendre immédiatement.  Il se sent plus rapidement à l'utilisateur, même si vous n'enregistrez pas le serveur des cycles.  Vous peut sauver les cycles serveur en décidant sur certaines conditions et déclencheurs d'invalider ce cache de cookie local.  C'est tout situationnelle et artsy trucs et vraiment le plus amusant :). 

</fin>

undefinedS'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin