Arsip Tag: JavaScript

Cepat dan mudah: Buat situs SharePoint menggunakan sisa

Ada banyak sumber daya di yang menunjukkan bagaimana melakukan ini, tapi aku tidak bisa menemukan link masuk ke komprehensif, Jadi di sini kita berada.

Anda dapat membuat situs SharePoint menggunakan REST API.  Berikut adalah contoh sepenuhnya panggang:

<!--
    SiteRequestForm.html: Mengumpulkan informasi dan membuat situs untuk pengguna.
-->

<Pusat>
<Meja>
    <TR>
        <TD>Nama situs:</TD>
        <TD><masukan jenis= "teks" Nama= "SiteName" id= "SiteName" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <masukan jenis= "Kirim" id= "CreateSiteButton" nilai= "Buat situs" />
        </TD>
    </TR>
</Meja>
</Pusat>

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

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parameter": {
                __metadata: { "jenis": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Judul: "Paultest1",
                Deskripsi: sisanya-dibuat "web oleh Paulus!",
                Bahasa: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: palsu
            }
    },

    createSite: fungsi () {

        jQuery.support.cors = benar;

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

            header: {
                "menerima": "aplikasi/json; oData = verbose",
                "content-type": "aplikasi/json;oData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            sukses: fungsi () { peringatan("sukses"); },
            kesalahan: fungsi () { peringatan("kesalahan"); }

        });
    },

    wireUpForm: fungsi () {
        $("#CreateSiteButton").Klik(fungsi () {
            peringatan("Untuk mencoba dan membuat situs.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Ketika sukses, Anda mendapatkan paket JSON dalam respon seperti ini:

image

Kunci pikiran dan pembelajaran dari ini meliputi:

  • Pendekatan ini menggunakan jQuery.  Dalam kasus saya, Perpustakaan jQuery saya berada di "../ plugin. "  Anda akan ingin untuk mengubahnya untuk menunjuk ke lokasi JQ favorit Anda.
  • Anda dapat menyalin dan menyisipkan potongan yang seluruh ke bagian Web Content Editor pada halaman dan itu harus bekerja dengan baik.  Anda akan ingin mengubah titik akhir dari API panggilan dan pastikan Anda referensi JQ dengan benar.
  • URL adalah relatif terhadap endpoint Anda API.  Dalam kasus saya, menciptakan sub situs di bawah https://bigapplesharepoint.com
  • Anda tidak perlu untuk memberikan konten-panjang. Beberapa posting blog dan MSDN dokumen menyiratkan bahwa Anda melakukan, tetapi terjadi bagi saya secara otomatis, yang saya asumsikan sedang ditangani oleh $AJAX panggilan itu sendiri.
  • Baris ini diperlukan untuk menghindari Tanggapan "dilarang": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Ada cara lain untuk melakukannya, Tapi ini cukup bagus.  Saya telah kehilangan link ke blog yang disediakan jalan pintas ini.  H/T ke Anda, misterius blogger!

Good luck dan berharap ini membantu seseorang.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Cepat dan sederhana: SharePoint sisanya panggilan hanya kembali 100 Catatan

Saya telah bekerja pada sebuah situs web menghadapi yang umum untuk praktek SharePoint saya di sini di New York dan itu menggunakan banyak JavaScript dan sisanya panggilan untuk menampilkan konten.

Selama pengembangan utama, Cara membuat dataset kecil dengan hanya 10 atau jadi baris dalam daftar kustom dan panggilan ISTIRAHAT saya semua diambil dari sana.  Sekali aku bumped up daftar yang memiliki beberapa ratus baris data untuk menguji untuk pertumbuhan diantisipasi, Saya menemukan bahwa saya mendapatkan persis 100 baris yang dikembalikan kembali pada panggilan ISTIRAHAT saya.

Ini adalah hal yang sangat sederhana ke alamat.  Dalam kasus saya (dan saya percaya dalam kebanyakan kasus), default sisanya panggilan untuk SharePoint (dan mungkin sebagai standar industri?) kembali 100 baris.  Kembali lebih dari default, Gunakan $top parameter pada panggilan Anda, seperti dalam:

Dapatkan /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/item?$Pilih = ID,Judul,Kategori/judul,Blog_x0020_Author/judul,DatePublished,BlogSummary&$memperluas = Blog_x0020_Author,Kategori&$Filter =&$Top = 9999

Aku mengambil 9999 dalam kasus ini karena saya tahu bahwa growth-wise, tidak akan ada lebih dari 200 atau jadi baris ditambahkan ke daftar ini dalam setahun.  Jika ia menjadi canggung, kita dapat menerapkan beberapa paging di jalan.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Orang miskin di Caching di JavaScript

[TL;DR versi: menggunakan cookies untuk menyimpan hasil async panggilan; membuat hasil masa lalu async panggilan segera dan kemudian memvalidasi mereka setelah beban halaman.]

Saya telah bekerja pada situs SharePoint intranet untuk klien yang fitur, di antara hal lain, navigasi sekunder yang bergaya pilihan menu yang dikelola melalui daftar kustom tua biasa.  Idenya adalah bahwa klien mendapatkan untuk mengontrol menu situs "mereka" tanpa mempengaruhi atau sedang dipengaruhi oleh navigasi global yang dikeluarkan oleh itu.

(ada sesuatu yang sangat subversif tentang menambahkan CEWP yang menunjuk ke sebuah file HTML yang memuat beberapa CSS dan JS untuk secara fundamental mengubah hampir segala sesuatu tentang perilaku situs... tapi itu untuk pos lain)

Kode untuk ini cukup sederhana:

Sini tempat sakit adalah bahwa setiap kali ada hits salah satu halaman situs, browser web pengguna yang menjangkau untuk mendapatkan item dari daftar.  Setelah dev lengkap dan pengujian telah membuktikan hal-hal yang stabil dan lengkap, panggilan ini tidak perlu lebih dari 99% waktu sejak menu jarang berubah.  Ini juga memiliki mempengaruhi UI aneh yang umum dalam ini dunia baru yang berani situs web hiper-ajaxy-halaman menulisnya dan hanya kemudian membuat menu.  Sangat gelisah dan mengganggu dalam pandangan saya.  Dan gelisah. Jadi, caching. 

Aku diubah logika thusly:

  • Mencari cookie di browser yang berisi menu aku terakhir membacanya
    • Jika ditemukan, membuat itu segera.  Jangan menunggu untuk halaman untuk selesai loading.  (Anda perlu memastikan bahwa HTML Anda ditempatkan secara strategis di sini, Tapi itu tidak sulit untuk dilakukan).
  • Menunggu halaman selesai loading dan membuat async panggilan untuk memuat menu item dari daftar menggunakan sisa atau lists.asmx atau apa pun
  • Membandingkan apa yang saya Dapatkan terhadap cookie
    • Jika cocok, Stop
    • Jika tidak, menggunakan jQuery, dinamis mengisi setumpuk jika <Li>di dalam <UL>
  • Gunakan CSS untuk melakukan semua format
  • Keuntungan!

Beberapa dari Anda akan mengatakan, "Hei! ada tidak ada nyata caching terjadi di sini karena Anda sedang membaca menu tetap setiap kali.”  Dan kau benar-aku tidak memberikan server jenis istirahat.  Namun karena panggilan async dan terjadi setelah halaman awal muatan HTML sepenuhnya menuliskan, ia "merasa" lebih responsif terhadap pengguna.  Menu menuliskan cukup banyak seperti halaman yang menarik.  Jika menu terjadi perubahan, pengguna terkena gelisah menggambar ulang menu, tetapi hanya satu kali.

Ada beberapa cara untuk membuat ini caching lebih efektif dan membantu keluar server pada saat yang sama:

  • Dimasukkan ke dalam aturan "cookie cache" itu berlaku untuk minimal 24 jam atau beberapa jangka waktu lain. Selama ada kuki tidak kedaluwarsa, menggunakan cookie menu snapshot dan tidak pernah memukul server.

Yah... itu semua yang datang ke pikiran sekarang :). 

Jika seseorang memiliki ide-ide cerdas di sini saya ingin tahu mereka.

Dan terakhir-teknik ini dapat digunakan untuk hal-hal lain.  Halaman ini klien memiliki sejumlah hal data-driven pada berbagai halaman, banyak dari mereka mengubah relatif jarang (seperti satu minggu sekali atau sebulan sekali).  Jika Anda menargetkan daerah tertentu dari fungsi, Anda dapat memberikan UI lebih responsif dengan konten menarik dari toko lokal cookie dan rendering segera.  Rasanya lebih cepat kepada pengguna bahkan jika Anda tidak menyelamatkan server setiap siklus.  Anda dapat Simpan siklus server oleh memutuskan pada beberapa kondisi dan memicu untuk membatalkan cache lokal cookie ini.  Itulah semua situasional dan barang-barang berseni dan benar-benar yang paling menyenangkan :). 

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin