Archiwa tagów: JavaScript

Szybkie i łatwe: Tworzenie witryny programu SharePoint przy użyciu reszta

Istnieje wiele zasobów wokół tego pokazu, jak to zrobić, ale nie mogłem znaleźć link kompleksowe go do, Więc tu jesteśmy.

Można utworzyć witryny programu SharePoint przy użyciu interfejsu API REST.  Oto przykład pełni pieczone:

<!--
    SiteRequestForm.html: Zbieranie informacji i tworzenie strony internetowej dla użytkownika.
-->

<centrum>
<Tabela>
    <TR>
        <TD>Nazwa witryny:</TD>
        <TD><dane wejściowe Typ= "tekst" Nazwa= "Nazwa witryny" Identyfikator= "Nazwa witryny" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <dane wejściowe Typ= "submit" Identyfikator= "CreateSiteButton" wartość= "Utwórz witrynę" />
        </TD>
    </TR>
</Tabela>
</centrum>

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

<skrypt>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametry": {
                __metadata: { "typ": "SP.WebInfoCreationInformation" },
                Adres URL: "Paultest1",
                Tytuł: "Paultest1",
                Opis: "reszta utworzone sieci web przez Paul!",
                Język: 1033,
                Paź: "sts",
                UseUniquePermissions: FAŁSZ
            }
    },

    createSite: Funkcja () {

        jQuery.support.cors = PRAWDA;

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

            nagłówki: {
                "Akceptuj": "aplikacja/json; odata = verbose",
                "content-type": "aplikacja/json;odata = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            dane: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            sukces: Funkcja () { alarm("sukces"); },
            błąd: Funkcja () { alarm("błąd"); }

        });
    },

    wireUpForm: Funkcja () {
        $("#CreateSiteButton").Kliknij przycisk(Funkcja () {
            alarm("Się spróbować i tworzenia witryny.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skrypt>

Po pomyślnym, otrzymasz pakiet JSON w odpowiedzi jak to:

image

Mój klucz myśli i wiedza, ze to między innymi:

  • Ta metoda używa jQuery.  W moim przypadku, moja biblioteka jQuery znajduje się w ".../ plugins. "  Chcesz zmienić, wskaż lokalizację ulubionego JQ.
  • Można skopiować i wkleić cały fragment tego Web Part Edytor zawartości na stronie i powinno działać dobrze.  Będziesz chciał zmienić punkt końcowy połączenia API i upewnij się, że odwołanie JQ poprawnie.
  • Adres URL jest twój API punktu końcowego.  W moim przypadku, to jest tworzenie podstron pod https://bigapplesharepoint.com
  • Trzeba zapewnić elementu content-length. Niektóre wpisy na blogu i MSDN dokumentu oznacza, że można zrobić, ale stało się dla mnie automatycznie, które jest obsługiwane przez wywołanie .ajax $, sam.
  • Ten wiersz jest wymagane w celu uniknięcia odpowiedź "zakazane": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Istnieją inne sposoby na to, ale to jest bardzo ładne.  Straciłem link do bloga, że ten skrót.  H/T do Ciebie, tajemniczy blogger!

Powodzenia i spodziewać się ten współpracownik ktoś.

</koniec>

undefinedSubskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Szybkie i proste: SharePoint reszta rozmowy tylko zwraca 100 Rekordy

Pracuję na publicznej stronie internetowej stoi na mojej praktyce SharePoint tutaj w Nowy Jork i wykorzystuje wiele wywołań JavaScript i reszta pokazanie zawartości.

Podczas głównego rozwoju, Po prostu stworzyć małe dataset z 10 albo więc wiersze listy niestandardowej i moje reszta rozmowy z tam.  Raz wpadł na liście mają kilka kilkaset wierszy danych do testowania dla przewidywanego wzrostu, Dowiedziałem się, że był już dokładnie 100 wierszy zwracanych z powrotem na moje reszta rozmowy.

Jest to bardzo prosta sprawa, aby adres.  W moim przypadku (i uważam, że w większości przypadków), Domyślnie reszta wymaga programu SharePoint (i ewentualnie jak standardem?) Powrót 100 wiersze.  Zwraca więcej niż domyślny, Użyj parametru $top na Twój telefon, jak w:

Pobierz /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/elementy?$Wybierz = ID,Tytuł,Kategorie/tytuł,Blog_x0020_Author/tytuł,DatePublished,BlogSummary&$Rozwiń = Blog_x0020_Author,Kategorie&$Filtr =&$góry = 9999

Wybrałem 9999 w tym przypadku od tego czasu wiem, że growth-wise, nie będzie więcej niż 200 lub tak wiersze dodane do tej listy w ciągu roku.  Jeśli staje się brzydka, możemy wdrożyć niektóre stronicowania w dół drogi.

</koniec>

undefinedSubskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Biedny człowiek jest buforowanie w JavaScript

[TL;DR wersja: używa plików cookie do przechowywania wyników wywołania asynchroniczne; natychmiast uczynić wyniki ostatnich wywołania asynchroniczne i następnie potwierdzić je po ładowania strony.]

Pracuję w witrynie intranetowej SharePoint dla klienta, że funkcje, między innymi, stylizowane drugorzędowej nawigacji którego opcje menu są zarządzane przez regularne stary listy niestandardowe.  Chodzi o to, że klient dojdzie do sterowania menu "swojej" stronie bez wpływu lub są dotknięte nawigacji globalnej wprowadzone przez to.

(jest coś niezwykle wywrotowych o dodanie CEWP, który wskazuje plik HTML, który ładuje niektóre CSS i JS do fundamentalnie zmienić prawie wszystko o zachowanie strony... ale to na inny post)

Kod ten bardzo prosty:

  • Poczekaj na zakończenie załadunku i zrobić Asynchroniczne wywołanie załadować menu pozycja z listy za pomocą odpoczynku lub lists.asmx lub cokolwiek strony
  • Przy użyciu jQuery, dynamicznie wypełnić kilka, jeśli <Li>jest wewnątrz rodzica <UL> (Zobacz artykuł Christian Pinder tutaj proste wyjaśnienie tego tecnnique)
  • Czy wszystkie formatowania za pomocą CSS
  • Zysk!

Ból miejscu tutaj jest to, że za każdym razem ktoś uderza jednej ze stron witryny, przeglądarki sieci web użytkownika jest dotarcie do uzyskania pozycji z listy.  Po zakończeniu dev i badania okazał się rzeczy, aby być stabilne i kompletny, to wywołanie jest niepotrzebne więcej niż 99% czas od menu zmienia się rzadko.  Ono także ma fatalny wpływ UI, które jest powszechne w tym brave new world hiper ajaxy witryny sieci web-renderuje strony i dopiero wtedy czyni menu.  To jest roztrzęsiony i rozpraszać moim zdaniem.  I zdenerwowanie. Tak, buforowanie. 

I zmodyfikowano logikę wygląda następująco:

  • Poszukaj pliku cookie w przeglądarce, która zawiera menu, jak ostatnio ją przeczytać
    • Jeśli Znalezione, uczynić go natychmiast.  Nie czekaj na zakończenie ładowania strony.  (Musisz upewnić się, że twój HTML jest strategicznie umieszczone tutaj, ale to nie jest trudne do zrobienia).
  • Poczekaj na zakończenie załadunku i zrobić Asynchroniczne wywołanie załadować menu pozycja z listy za pomocą odpoczynku lub lists.asmx lub cokolwiek strony
  • Porównaj, co mam przeciwko cookie
    • Jeśli pasuje, PRZYSTANEK
    • W przeciwnym razie, przy użyciu jQuery, dynamicznie wypełnić kilka, jeśli <Li>jest w <UL>
  • Czy wszystkie formatowania za pomocą CSS
  • Zysk!

Niektórzy z was są gonna powiedzieć, "Hej! tu jest nie prawdziwy buforowania będzie tutaj skoro czytasz menu tak za każdym razem.”  I masz rację-nie jestem dając serwer wszelkiego rodzaju przerwy.  Ale ponieważ połączenie jest asynchroniczne i zdarza się po stronie początkowej ładunku HTML renderuje pełni, to "czuje się" bardziej dostosowane do użytkownika.  Menu renderuje dość podobnie jak strony rysuje.  Jeśli zmiana menu, użytkownik jest poddawane zdenerwowanie narysowany menu, ale tylko ten jeden raz.

Istnieje kilka sposobów, aby zrobić to buforowanie bardziej skuteczne i pomóc serwera w tym samym czasie:

  • Umieścić w regule, że buforze"cookie" jest ważny przez co najmniej 24 godzin lub jakieś inne ramy czasowe. Tak długo, jak jest nie skończony ciasteczka, Użyj pliku cookie menu migawka i nigdy nie uderzył serwer.

... Dobrze, że wszystkich, którzy przychodzą do głowy teraz :). 

Jeśli ktoś ma jakieś mądre pomysły tutaj chciałbym je poznać.

I wreszcie – Technika ta może być używany do innych rzeczy.  Strona to klient ma wiele rzeczy, opartych na danych na różnych stronach, wielu z nich zmienia stosunkowo rzadko (jak raz w tygodniu lub raz w miesiącu).  Jeśli cel określonych obszarów funkcjonalności, może dać bardziej elastyczne UI ciągnąc zawartość z magazynu lokalnego pliku cookie i renderowania natychmiast.  Czuje szybciej do użytkownika, nawet jeśli nie zapisujesz serwer żadnych cykli.  Możesz może Decydując się na pewne warunki i wyzwalaczy unieważnić ten cookie lokalnej pamięci podręcznej, należy zapisać cykli serwera.  To wszystko sytuacyjne i pretensjonalnymi rzeczy i naprawdę najbardziej zabawne :). 

</koniec>

undefinedSubskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin