Etiket Arşivleri: JavaScript

Hızlı ve kolay: DİNLENME kullanarak bir SharePoint sitesi oluşturma

Bunu nasıl kaynaklarını gösteren etrafında vardır., Ama kapsamlı gitmek için bir link bulamadım., İşte.

REST API kullanarak bir SharePoint sitesi oluşturabilir.  Tamamen pişmiş bir örnek:

<!--
    SiteRequestForm.html: Bilgi toplama ve kullanıcı için bir site oluşturun.
-->

<Merkezi>
<Tablo>
    <tr>
        <TD>Site adı:</TD>
        <TD><giriş türü= "metin" adı"SiteAdı =" kimliği"SiteAdı =" /></TD>
    </tr>
    <tr>
        <TD colspan"2 =">
            <giriş türü"submit =" kimliği"CreateSiteButton =" değer= "Site Oluştur" />
        </TD>
    </tr>
</Tablo>
</Merkezi>

<komut dosyası src="../Plugins/jQuery-1.11.0.min.js"></komut dosyası>

<komut dosyası>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametreleri": {
                __metadata: { "türü": "SPWebInfoCreationInformation" },
                URL: "Paultest1",
                Başlık: "Paultest1",
                Açıklama: Paul tarafından web diğerleri tarafından oluşturulan"!",
                Dil: 1033,
                LCID'sine: "sts",
                UseUniquePermissions: yanlış
            }
    },

    createSite: işlevi () {

        jQuery.support.cors = TRUE;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            yöntemi: "MESAJ",

            başlıkları: {
                "Kabul et": "uygulama/json; Odata = verbose",
                "content-type": "uygulama/json;Odata = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            veri: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            başarı: işlevi () { Uyarı("başarı"); },
            hata: işlevi () { Uyarı("hatası"); }

        });
    },

    wireUpForm: işlevi () {
        $("#CreateSiteButton").' ı tıklatın(işlevi () {
            Uyarı("Yaklaşık denemek ve siteyi oluşturmak için.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</komut dosyası>

Başarılı olduğunda, Bu yanıt bir JSON paket al:

image

Temel düşünce ve bu olası üzerinden Öğrenmeler:

  • Bu yaklaşım, jQuery kullanır.  Benim durumumda, benim jQuery kütüphanesi bulunur ".../ plugins. "  Bu senin en sevdiğin JQ konumu belirtmek için değiştirmek istediğiniz.
  • Kopyalayabilir ve içerik Düzenleyicisi Web Bölümü sayfasındaki tüm bu pasajı yapıştırın ve sadece iyi çalışması gerekir.  Youll'istemek-e doğru JQ başvuru emin olun ve API çağrısı bitiş noktası değiştirmek için.
  • URL'nin göreli olarak API'ın bitiş noktasıdır.  Benim durumumda, altında alt siteler oluşturma https://bigapplesharepoint.com
  • Bir içerik-uzunluk sağlamak gerek yok. Bazı blog yazıları ve MSDN belgesi anlamına gelir senin böyle, Ama benim için otomatik olarak oldu., varsayıyorum $.ajax çağrısı tarafından ele alınır.
  • Bu satır için bir "yasak" yanıtı önlemek için gerekli: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Bunu yapmak için başka yolları da vardır, Ama bu çok hoş.  Blog için bu kısayolu sağlanan bağlantıyı kaybettim.  H/T size, gizemli blogger!

İyi şanslar ve kimse bu yardımcı olur.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Hızlı ve basit: SharePoint dinlenme çağrı tek döndürür 100 Kayıtları

Ben bir kamu bakan web sitesinde burada içinde benim SharePoint uygulama için çalışıyoruz New York ve içerik göstermek için bir sürü JavaScript ve REST telefonu kullanır.

Ana hat geliştirme sırasında, Sadece küçük bir veri kümesi oluştur 10 veya satırları özel liste ve dinlenme aramalarıma oradan çok çekti.  Bir kez birkaç yüz beklenen büyüme için test edilecek verilerin satır için listesini çarptı., Ben tam olarak başlamıştı bulundu. 100 geri kalan telefonlarıma geri satırları.

Adres için çok basit bir şey bu.  Benim durumumda (ve çoğu zaman inanıyorum), varsayılan diğer SharePoint için çağırır. (ve muhtemelen bir endüstri standardı olarak?) geri dönmek 100 satırları.  Daha fazla varsayılan dönmek için, Aramanız için $top parametresini kullanın, olarak:

/Insights Dev/_api/Web/Lists/GetByTitle olsun('MockBlog')/öğeleri?$seçin ID =,Başlık,Kategoriler/başlık,Blog_x0020_Author/başlık,DatePublished,BlogSummary&$genişletme Blog_x0020_Author =,Kategoriler&$Filtre =&$Top = 9999

Ben aldım 9999 Bu durumda beri growth-wise biliyorum, orada alışkanlık'var olmak daha--dan 200 veya satırları bir yıl içinde bu listeye ekledi.  Hantal hale gelirse, Yolun aşağısında bir disk belleği uygulayabilirsiniz.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Zavallı adam, JavaScript önbelleğe alma'nın

[TL;DR sürüm: zaman uyumsuz arama sonuçlarını depolamak için tanımlama; Geçmiş zaman uyumsuz arama sonuçlarını hemen işlemek ve sonra onları sayfa yükleme sonra doğrulayın.]

SharePoint intranet sitesindeki bir müşteri için bu özellikleri çalıştım, diğer şeyler arasında, stilize bir ikincil gezinti menüsü seçeneklerini düzenli eski özel liste yönetilir.  Fikir istemci etkileyen veya onun tarafından koymak Genel gezinti tarafından etkilenen varlık olmadan "kendi" sitenin menü kontrol etmek alır.

(Bu temelde bir sitenin davranış hakkında hemen hemen her şeyi değiştirmek için bazı CSS ve JS yükler ama bu başka bir yazı için bir HTML dosyasına işaret eden bir CEWP ekleme konusunda son derece yıkıcı bir şey)

Bu basit kodu:

Sore spot burada olduğunu ne zaman kimse bir sitenin sayfaları hits, kullanıcının web tarayıcısı listeden öğeleri almak için dışarı ulaşıyor.  Tam ve test dev bir kez şeyler olduğu için stabil ve tam kanıtlamıştır, Buna gerek yok daha fazla 99% zamandan beri menü nadiren değişir.  Ayrıca bu cesur yeni dünya hiper-ajaxy web sitelerinin ortak bir garip UI etkiler vardır – sayfa oluşturur ve ancak o zaman menü hale geliyor.  Gergin ve rahatsız edici benim görüşüme göre.  Ve gergin. Yani, önbelleğe alma. 

Thusly mantığı modifiye:

  • Ben son okurken, menüyü içeren tarayıcı çerezde arayın
    • Eğer bulundu, Bunu hemen işleme.  Sayfa yükleme bitirmesini beklemek gerekmez.  (HTML burada stratejik olarak yerleştirilmiş emin olmanız gerekir, Ama bu kadar da zor değil).
  • Sayfanın yüklenmesini bitirmek ve bir zaman uyumsuz yük kadar dinlenme ya da lists.asmx kullanarak listeden menü öğeleri için arama yapmak bekleyin
  • Çerez karşı elimizdeki karşılaştırın
    • Eşleşiyorsa, DURDUR
    • Aksi takdirde, jQuery kullanarak, Eğer bir grup dinamik olarak doldurmak <Li>' ın içinde bir <ul>
  • Tüm biçimlendirme için CSS kullanma
  • Kar!

Bazılarınız söyleyeceksin, "hey! menü yine de okuduğunuz bu yana çok önbellekleme burada olmayacak her zaman.”  Ve haklısın-break herhangi bir sunucu vermiyorum.  Ama çağrı zaman uyumsuz ve sonra sayfayı ilk olur çünkü HTML yükü tam olarak işler, "kullanıcıya daha duyarlı hissediyorum".  Menü çok sayfa çizer olarak işler.  Eğer menü değiştirmek için, kullanıcı bir gergin yeniden çizmek menü için tabi tutulur, Ama sadece bir kere.

Bu önbelleğe alma daha verimli hale getirmek ve aynı zamanda sunucu yardım için bazı yolları vardır.:

  • "Tanımlama bilgisi önbelleği" için en az geçerli bir kural koymak 24 Saat veya diğer bir süre. Süresi dolan kurabiye yok sürece, Çerezin menü anlık kullanın ve asla sunucu hit.

Şu an aklıma gelen tek şey... :). 

Kimse burada akıllı bir fikrin varsa onları bilmek isterdim..

Ve son olarak – bu yöntem-ebilmek var olmak kullanılmış için diğer şeyler.  Bu istemcinin sayfa verilere şeylerin bir dizi çeşitli sayfalarda vardır., pek çoğu nispeten nadiren değiştirme (haftada bir veya ayda bir gibi).  İşlevselliği belirli alanları hedefliyorsanız, daha duyarlı bir kullanıcı Arabirimi yerel tanımlama bilgisi deposundan içerik çekme ve hemen işleme verebilir.  Sunucu herhangi bir devir kurtarmıyorsun bile daha hızlı kullanıcıya hissediyor.  Sen Can sunucu döngüsü bu yerel tanımlama bilgisi önbelleği geçersiz kılmak için bazı koşullar ve tetikleyiciler karar vererek kaydedin.  Tüm durumsal ve iddialı şeyler ve gerçekten en eğlenceli :). 

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin