Arsip bulanan: Juni 2009

Bentuk InfoPath Sevices, Bentuk-bentuk otentikasi berbasis (FBA) dan nama berkas unik

Aku sudah bekerja pada beberapa bentuk InfoPath minggu ini di MOSS di lingkungan FBA dan belajar, Ketika saya pergi untuk menyebarkan formulir lingkungan produksi dengan FBA zona yang username() fungsi fungsi tidak bekerja. Saya menggunakan ini untuk menghasilkan nama file yang unik.

Yah, fungsi tidak bekerja dalam lingkungan FBA (setidaknya, tidak keluar dari kotak). Dan, Setelah refleksi, menggunakan nama pengguna dalam cara yang aku telah merencanakan tidak memiliki dijamin nama berkas unik dalam setiap peristiwa.

Solusi saya adalah untuk menggunakan sekarang() fungsi dan aturan yang kebakaran pemuatan bentuk. Saya menetapkan nama file ke unsur data ketika itu kosong:

image

image

Keuntungan dari pendekatan ini adalah bahwa nama file diatur hanya sekali. (Aku tidak menunjukkan hal itu di screen shot, Tapi meletakkan kondisi pada aturan untuk hanya api ketika "myFilename" kosong). Aku digunakan untuk menetapkan nama file di tingkat sumber data. Biasanya, Aku akan melakukan sesuatu (Buruk) Seperti ini:

image

Masalah dengan itu adalah bahwa jika pengguna a membuka formulir pada hari Senin dan pengguna b perubahan itu pada hari Selasa, Anda akan berakhir dengan dua bentuk yang berbeda karena dua pengguna yang berbeda disimpan dengan nama-nama pengguna yang berbeda.

Jadi, sebagai annoying karena FBA dapat secara umum dan dengan InfoPath khususnya, itu membuat saya berpikir ulang kecil tapi benar-benar penting detail teknis dan pendekatan yang saya tidak akan dilakukan jika tidak!

</akhir>

Berlangganan ke blog saya.

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

Technorati Tags:

Mengamankan SharePoint daftar/dokumen perpustakaan Views tampaknya (semacam) Mungkin dengan jQuery

Ini adalah posting lain dalam saya terus-menerus seri bagaimana menggunakan jQuery dengan SharePoint.
Jika Anda ingin mempelajari lebih lanjut tentang jQuery, Saya sangat merekomendasikan: jQuery dalam tindakan oleh beruang Bibeault dan Yehuda Katz.

Salah satu hal pertama yang saya pikir, begitu aku mulai bermain-main dengan jQuery, adalah apakah kita bisa menggunakannya untuk menjamin pandangan SharePoint. Jawabannya adalah "tidak" (atau setidaknya, Saya tidak mengklaim mungkin). Namun, memang mungkin untuk membuat sulit bagi orang untuk melihat pandangan tertentu.

Saya mulai dengan lingkungan sandbox saya ketika bekerja pada ini. Saya menulis tentang lingkungan di sini: Cepat dan mudah: Membuat Your Own jQuery Sandbox untuk SharePoint.

Untuk "aman" pandangan, Ikuti langkah-langkah:

  1. Membuat tampilan yang Anda inginkan untuk mengamankan. Saya melakukan itu dan menyebutnya "Dijamin View".

    Ini adalah apa yang tampak seperti ketika itu tidak "aman":

    image

  2. Menambahkan bagian web content editor untuk Lihat halaman menggunakan trik yang dijelaskan dalam artikel sandbox (yaitu. Tambahkan "tampilan halaman = bersama&ToolPaneView = 2" ke URL).
  3. Mengetahui _spUserId SharePoint Anda dengan mengikuti langkah-langkah ini gila, percaya atau tidak:
    1. Login ke lingkungan SharePoint Anda.
    2. Bidang alamat web browser, jenis: "javascript:peringatan(_spUserId").
    3. Mencatat hasil (ini adalah "13" dalam kasus saya).

      image

  4. Menambahkan javascript berikut untuk Anda CEWP dalam kode tampilan:

    <jenis script ="text/javascript"
        src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(fungsi() {
    
        peringatan(_spUserId);
    
        var theSecuredView = $(' iframe[FilterLink * = 20View % aman]');
    
        Jika ((theSecuredView.length > 0) && (_spUserId == 13))
          $(' iframe[FilterLink * = 20View % aman]').orangtua().orangtua().orangtua().HTML("<TR bgcolor = merah><TD>Tidak ada pemandangan untuk Anda!</TD></TR>");
      });
    
    </script>
    

Saya telah menyertakan waspada bahwa(_spUserId) baris di sana untuk menunjukkan bagaimana hal ini tidak benar-benar "mengamankan" pandangan, tapi hanya membuatnya lebih sulit untuk melihat. Lebih lanjut tentang bahwa pada saat.

Pada dasarnya, jQuery adalah mencari iFrame pada halaman yang memiliki atribut yang berisi "Aman % 20View" dalam nilai. Setelah menemukan itu, kami memeriksa untuk melihat apakah pengguna saat ini "13". Jika, Kami berjalan DOM untuk <TR> Tag (yang aku tahu dengan melihat sumber dan melacak itu) dan kemudian mengganti tag TR tersebut dengan pesan saya. Aku benar-benar tidak tahu bagaimana kuat ini (Aku sangat mencurigakan, Sebenarnya), Tapi itu berhasil di sandbox saya. Jika saya menemukan cara yang lebih baik, Aku akan blog tentang hal itu. Ini adalah hasil:

image

Saya klik tombol OK dan data diganti dengan pesan merah besar:

image

Seperti yang Anda kirim, jalan aku sudah menerapkan solusi "keamanan" ini adalah untuk memungkinkan bagian web untuk membuat sendiri. Setelah itu selesai, Aku menimpa isi dengan "tidak ada pandangan saya untuk Anda!"pesan.

Terlepas dari kenyataan bahwa itu tidak benar-benar "aman '" lihat, berpotensi berguna dan dengan beberapa pekerjaan pintar, akhirnya mungkin securable dalam pengertian yang lebih formal. Masalah mendasar adalah bahwa klien mendapatkan semua data dan kemudian, hanya setelah mendapat data, itu menghapuskan itu. Jika klien adalah mendapatkan data, pengguna pintar dapat mencegah jQuery berjalan sama sekali dan melihat apa yang dia ingin melihat.

Ada kekurangan lain. Pendekatan "keamanan" ini didasarkan dari _spUserId. Kami ingin untuk benar-benar aman didasarkan pada model keamanan SharePoint penuh, atau setidaknya oleh nama pengguna. Menjadi semakin sulit, tapi aku melihat barang-barang bagus yang ditulis pada subjek ini, Jadi aku berharap ada jawaban yang bagus untuk masalah.

Daftar dilihat sendiri harus dipangkas, Jika mungkin. Saya belum mencoba untuk mencari tahu. Aku menganggap itu mungkin, tetapi tidak benar-benar memecahkan masalah mendasar keamanan karena seseorang bisa masih ketikkan URL tampilan yang mereka inginkan (Jika mereka tahu). Namun, pemangkasan akal. Ini adalah fitur baik kegunaan dan membantu untuk mengaburkan hal. Jika pengguna akhir tidak tahu bahwa ada acara Lihat, mereka mungkin tidak akan mencoba untuk menggunakannya. Kadang-kadang, cukup baik.

Dengan keberuntungan, Saya akan memiliki lebih banyak untuk menulis tentang hal ini dari waktu ke waktu.

</akhir>

Berlangganan ke blog saya.

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

Cepat dan mudah: Cara lebih baik untuk menggunakan jQuery untuk menyembunyikan kolom teks pada formulir SharePoint

Ini adalah posting lain dalam saya terus-menerus seri bagaimana menggunakan jQuery dengan SharePoint.
Jika Anda ingin mempelajari lebih lanjut tentang jQuery, Saya sangat merekomendasikan: jQuery dalam tindakan oleh beruang Bibeault dan Yehuda Katz.

Sebelumnya, Saya menulis tentang bagaimana menggunakan jQuery untuk menemukan dan menyembunyikan kolom teks pada formulir. Aku tidak peduli untuk pendekatan spesifik (Saya itu chaining orangtua-itu hanya tidak dilakukan hari ini, setidaknya dalam keluarga kualitas).

Ketika saya pertama kali mulai berpikir tentang hal itu, Aku tahu aku perlu untuk menemukan <TR> yang saya bisa meminta Sembunyikan() metode. Usaha awal saya untuk menemukan yang benar <TR> sesuatu seperti ini:

$(' tr:telah(masukan[judul = Sembunyikan saya!])');

Masalah dengan itu adalah bahwa itu akan menemukan setiap <TR> Tag yang telah ada hubungan orangtua Sembunyikan saya! lapangan, bahkan jika menyembunyikan saya! adalah bersarang berbagai tingkatan di dalam <TR>'s. Ternyata saya sandbox formulir, ungkapan itu menemukan 9 berbeda TR yang memiliki menyembunyikan saya! sebagai seorang anak di suatu tempat di pohon DOM nya. Aku sadar bahwa aku bisa berjalan kembali ke atas pohon dari field input itu sendiri, Jadi itulah bagaimana saya akhirnya menyalahgunakan orangtua, Tapi itu tidak duduk baik dengan saya.

Aku memberikan beberapa pemikiran untuk ini dan salah satu hal yang saya baca akhirnya masuk akal: Aku bisa menggunakan yang tidak() metode untuk memangkas <TR>yang saya tidak ingin saya set dibungkus. Yang membawa saya untuk ini:

$(' tr:telah(masukan[judul = Sembunyikan saya!])').tidak(' tr:telah(TR)').Sembunyikan();

Bit pertama menemukan semua <TR> Tag yang telah bersembunyi saya! bidang di mana saja dalam hirarki mereka sendiri. Kemudian strip keluar <TR> yang juga memiliki anak <TR>. Hal ini membuat kita dengan satu <TR> yang:

1) Tidak memiliki <TR> Catatan anak

2) Memiliki input field sebagai anak.

Kita kemudian dapat menerapkan Sembunyikan() metode untuk yang dihasilkan menetapkan dan kami selesai.

Aku masih agak gugup tentang ini, tetapi tidak gugup sebagai chaining orangtua.

Aku tidak tahu apakah ini adalah penerapan terbaik atau tidak. Mungkin ada cara yang lebih tepat untuk mengidentifikasi hanya <TR> bahwa kita peduli tentang dalam bentuk SharePoint. Jika Anda tahu, Silakan kirim komentar.

</akhir>

Berlangganan ke blog saya.

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

Cepat dan mudah: Menggunakan jQuery untuk menyembunyikan kolom teks pada formulir SharePoint

Ini adalah posting lain dalam saya terus-menerus seri bagaimana menggunakan jQuery dengan SharePoint.
Jika Anda ingin mempelajari lebih lanjut tentang jQuery, Saya sangat merekomendasikan: jQuery dalam tindakan oleh beruang Bibeault dan Yehuda Katz.

UPDATE (sudah!): Saya berpikir cara yang lebih baik untuk menemukan <TR> Aku ingin menyembunyikan tag dan menulis tentang itu di sini. Anda mungkin masih menemukan artikel ini menarik pula jadi aku leavnig itu.

Aku ingin menyembunyikan kolom teks, "Sembunyikan saya!"seperti yang ditunjukkan:

image

JQuery berikut melakukan trik untuk saya:

<script type ="text/javascript">

  $(fungsi() {


    $(' masukan[judul = Sembunyikan saya!]').orangtua().orangtua().orangtua().Sembunyikan();

  });

</script>

Kode mengatakan, "menemukan saya semua masukan ladang yang judulnya = Sembunyikan saya!. Kemudian, Para orangtua dan kemudian berikutnya orangtua dan * berikutnya * orangtua (Fiuh!) dan memohon Sembunyikan() metode pada hal itu, apa pun itu kebetulan.

Aku tahu bahwa struktur orangtua dengan melihat HTML untuk bentuk yang SharePoint dibuat seperti yang ditunjukkan:

<TR>
    <TD nowrap= "true" valign= "top" lebar= "190px" kelas= "ms-formlabel">
        <H3 kelas= "ms-standardheader">
            <nobr>Sembunyikanlah aku.!</nobr>
        </H3>
    </TD>

    <TD valign= "top" kelas= "ms-formbody" lebar= "400px">
        <!-- FieldName = "Sembunyikan saya!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <rentang dir= "tidak">
            <masukan
                Nama= "m$ ctl00$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
                jenis= "teks"
                maxlength= "255"
                id= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                judul= "Sembunyikan saya!"
                kelas= "ms-long" />
                <br>
        </rentang>


    </TD>
</TR>

Gambar ini memperlihatkan sama, Tapi Mark up dengan orang tua:

image

Menjadi orangtua pertama (1) adalah rentang tag. Rentang 's orangtua (2) TD tag dan kemudian akhirnya kami bisa nyata orangtua saya ingin menyembunyikan (3) yang merupakan tag TR itu sendiri.

Ini adalah pendekatan yang sangat mengerikan yang saya pikir karena sangat bergantung pada struktur sangat spesifik formulir ini. Ketika SharePoint 2010 keluar, seluruh struktur ini bisa berubah dan istirahat pendekatan ini. Apa yang saya benar-benar ingin lakukan adalah kerajinan pemilih jQuery yang adalah sepanjang baris "menemukan saya semua TR (dan hanya TR Tag) yang punya tempat di elemen anak mereka sebuah field input yang judulnya = Sembunyikan saya!”. Aku mulai dari bawah dan bergerak naik. Dengan asumsi saya mengetahui ini, Saya akan posting diperbarui "cepat dan mudah ' posting.

</akhir>

Berlangganan ke blog saya.

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

Cepat dan mudah: Membuat Your Own jQuery Sandbox untuk SharePoint

Ini adalah posting lain dalam saya terus-menerus seri bagaimana menggunakan jQuery dengan SharePoint.
Jika Anda ingin mempelajari lebih lanjut tentang jQuery, Saya sangat merekomendasikan: jQuery dalam tindakan oleh beruang Bibeault dan Yehuda Katz.

Memulai dengan jQuery di SharePoint mudah (Ke saya). (Saya punya pertanyaan serius tentang pendekatan "best practices" untuk penggelaran itu untuk produksi, Tapi itu untuk hari lain). Saya baru saja mulai bermain dengan teknologi ini dan itu, Saya menciptakan lingkungan sandbox menggunakan. Jika Anda mencari untuk memulai dengan jQuery, Anda mungkin menemukan pendekatan ini berguna.

1. Membuat situs kosong

Membuat sebuah situs kosong di suatu tempat di situs Anda dan menyebutnya sesuatu yang pintar seperti "jQuery Sandbox".

2. Download jQuery

Anda dapat men-download jQuery javascript library dari sini: http://docs.jquery.com/Downloading_jQuery

Menyimpan itu untuk desktop Anda.

Saya telah menggunakan versi "minified".

3. Buat sebuah perpustakaan dokumen SharePoint

Di situs sandbox, Buat sebuah perpustakaan dokumen.

4. Meng-upload jQuery perpustakaan ke SharePoint

Akses doc perpustakaan yang baru Anda buat dan upload jQuery Perpustakaan.

5. Membuat daftar SharePoint kustom

Aku mulai dengan daftar kustom karena saya ingin Bergelandangan dengan standar SharePoint forms. Anda juga dapat membuat sebuah halaman di Perpustakaan halaman atau halaman bagian web dan mungkin banyak tempat lain.

Menambahkan beberapa kolom daftar kustom sehingga Anda memiliki sesuatu untuk menjalankan jQuery terhadap. Tujuan awal saya adalah untuk:

  1. Menyembunyikan sebuah field.
  2. Menetapkan nilai ke bidang.

Dengan itu tujuan dalam pikiran, Saya menambahkan dua Field teks. Dari waktu ke waktu, Aku akan bermain dengan link, gambar, pencarian, dll.

6. Memodifikasi NewForm.aspx Web bagian halaman dan menambahkan bagian Web Content Editor

Ini adalah sedikit hitam magic-ish , karena merupakan konsep baru untuk saya. Saya pertama kali belajar tentang hal ini dari Paul Grenier, SharePoint jQuery Superstar, di situs proyek CodePlex: http://spff.codeplex.com/.

Ikuti langkah-langkah untuk menambahkan CEWP ke halaman yang sama yang menunjukkan NewForm.aspx untuk setiap daftar kustom:

  1. Mengakses daftar kustom dan klik baru.
  2. Tambahkan berikut ke URL: Tampilan halaman = bersama&ToolPaneView = 2

Yang akan mengubah formulir entri data vanili Anda membosankan dari sesuatu seperti ini:

image

Ini:

image

Menambahkan bagian web editor konten ke halaman.

7. Menulis jQuery pertama kode

Membuka CEWP yang di tampilan kode dan tambahkan berikut:

image

Berikut adalah kode aktual jika Anda ingin copy/paste:

<jenis script ="text/javascript"
    src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
</script>

<script type ="text/javascript">
  $(fungsi() {

    $('#resultsID').HTML('Ada' + $('a').ukuran() + 'tag tag pada Halaman ini.');

  });
</script>

Hasil:
<div id ='resultsID'></div>
/hasil

Perhatikan bahwa yang pertama <script> Tag adalah referensi perpustakaan jQuery aktual. Agaknya, Hal ini berubah dari waktu ke waktu, sehingga Anda akan ingin memastikan bahwa Anda) Gunakan nama yang tepat dan b) Arahkan ke benar SharePoint dokumen Perpustakaan.

Berjemur di kemuliaan

Jika Anda melakukannya dengan benar, Anda akan melihat hasil yang mirip dengan berikut:

image

Membungkus

Ini bukan satu-satunya cara untuk memulai, Tapi itu cepat, mudah dan terisolasi dari lingkungan SharePoint Anda yang sudah ada.

</akhir>

Berlangganan ke blog saya.

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

Cepat dan mudah: Menggunakan jQuery untuk menetapkan teks yang nilai bidang SharePoint formulir

Aku mulai bermain-main dengan jQuery kemarin. Aku sudah lama ingin melakukan ini untuk waktu yang lama, sejak Paul Grenier mulai menulis seri tentang jQuery untuk pengguna akhir di mulia www.endusersharepoint.com situs web. Sebagai I menggunakannya, Saya berharap untuk menambahkan serangkaian "Cepat dan mudah" posting seperti ini. Posting ini menjelaskan tentang cara menetapkan nilai bidang teks dikenal untuk apapun yang Anda inginkan.

Dalam skenario ini, Saya telah membuat daftar kustom bentuk "baru" yang tampak seperti yang ditunjukkan:

image

Ini adalah bentuk baru untuk daftar kustom dengan default judul kolom dan dua daftar kolom (tidak situs kolom; Saya tidak berpikir itu harus membuat perbedaan).

Tujuannya adalah untuk menetapkan nilai sewenang-wenang ke bidang, "DefaultMeFieldNoSpaces" (Anda dapat memberitahu saya sedikit dari seorang pengecut dengan "tidak ada ruang" hal terjadi, tapi aku membumbui pada akhir artikel ini).

Ini sedikit jQuery bekerja untuk saya:

<script type ="text/javascript">

  $(fungsi() {

    $(' masukan[title = DefaultMeFieldNoSpaces]').attr(
        {nilai: ' Anda di dalam labirin berkelok-kelok bagian, Semua sama.'});

  });

</script>

Seperti yang saya mengerti sedikit jQuery mengatakan, "menemukan saya masukan tag yang judulnya = DefaultMeFieldNoSpaces. Kemudian, mengatur semua nilai-nilai mereka ke sebuah frase terkenal dari permainan komputer lama."

Karena hanya akan ada satu bidang pada formulir dengan judul sama dengan "DefaultMeFieldNoSpaces" kami yakin akan menetapkan nilai ke bidang itu dan tidak ada lainnya.

Apa tentang bidang yang namanya mempunyai ruang di dalamnya? Ini adalah hampir sama:

<script type ="text/javascript">

  $(fungsi() {
     $(' masukan[title = menetapkan bidang dengan ruang]').attr(
        {nilai: ' Anda di dalam labirin berkelok-kelok bagian, Semua sama.'});

  });

</script>

Saya rasa ini adalah pendekatan yang cukup aman, berarti bahwa kita harus mampu menemukan bidang yang kita inginkan dan hanya lapangan yang kita inginkan. Jika Anda melihat HTML SharePoint memberi kita, ini semacam berantakan:

<masukan
Nama= "m$ ctl00$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
jenis= "teks"
maxlength= "255"
id= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
judul= "DefaultMeFieldNoSpaces"
kelas= "ms-long"
/>

"judul" berdiri sebagai atribut yang dikenali dan mudah-mudahan unik untuk membantu kami mengidentifikasi kolom tertentu yang kita ingin menetapkan nilai sewenang-wenang.

Ini adalah konsep dasar. Menetapkan bidang dalam cara yang sewenang-wenang seperti ini tidak akan memenangkan penghargaan apapun. Namun, Jika kita ingin melakukan hal-hal tingkat bentuk lebih menarik (Semua dari kita selalu ingin melakukan, Tentu saja, tepat setelah kami selesai mencuci piring), seperti mengubah nilai "b bidang" secara otomatis berdasarkan nilai "field", Kami (SAYA) perlu belajar hal-hal ini.

Saya pikir kami kesempatan terbaik untuk mendapatkan nilai yang benar-benar berguna di sini adalah melalui judul, setidaknya untuk bidang teks. Mungkin ada yang lebih baik, pendekatan yang lebih handal. Jika saya merasa, Saya akan update posting ini. Jika Anda tahu cara yang lebih baik, Silakan Tinggalkan komentar.</akhir>

</akhir>

Berlangganan ke blog saya.

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