Arkib Bulanan: Jun 2009

InfoPath Borang Sevices, Borang Pengesahan Berasaskan (FBA) dan Nama Fail unik

Saya telah bekerja pada beberapa InfoPath membentuk minggu ini di MOSS dalam persekitaran FBA dan belajar, apabila saya pergi untuk menggunakan borang yang persekitaran pengeluaran dengan zon FBA bahawa nama pengguna() fungsi fungsi tidak berfungsi. Saya telah menggunakan ia untuk menjana nama fail yang unik.

Well, yang berfungsi tidak bekerja dalam persekitaran yang FBA (sekurang-kurangnya, tidak keluar dari kotak). Dan, apabila refleksi, menggunakan nama pengguna dengan cara yang saya telah merancang tidak akan dijamin nama fail yang unik dalam apa jua keadaan.

Penyelesaian saya adalah untuk menggunakan kini() fungsi dan peraturan yang kebakaran pada loading borang. Saya Tetapkan nama fail untuk data elemen bila ianya kosong:

image

image

Kelebihan pendekatan ini adalah bahawa nama fail diset sekali sahaja. (Saya tidak menunjukkan ia dalam pukulan skrin, tetapi meletakkan syarat pada peraturan hanya api apabila "myFilename" adalah kosong). Saya digunakan untuk menetapkan nama fail pada peringkat sumber data. Biasanya, Saya akan melakukan sesuatu (buruk) seperti ini:

image

Masalah dengan itu adalah bahawa jika pengguna A membuka bentuk pada hari Isnin dan B pengguna berubah pada hari Selasa, anda akan berakhir dengan dua bentuk yang berbeza sejak dua pengguna yang berbeza disimpan dengan nama pengguna yang berbeza.

Jadi, sebagai menjengkelkan sebagai FBA boleh secara umum dan dengan InfoPath khususnya, ia membuatkan saya memikirkan semula butiran teknikal kecil tetapi benar-benar penting dan pendekatan yang saya tidak akan melakukan sebaliknya!

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Menjamin SharePoint Senarai / Dokumen Views Perpustakaan Nampaknya (jenis) Kemungkinan dengan jQuery

Ini merupakan satu lagi jawatan dalam saya siri berterusan bagaimana untuk menggunakan jQuery dengan SharePoint.
Jika anda ingin mengetahui lebih lanjut mengenai jQuery, Saya sangat mengesyorkan: jQuery dalam Tindakan oleh Bear Bibeault dan Yehuda Katz.

Salah satu perkara pertama yang saya fikir, apabila saya mula bermain-main dengan jQuery, adalah sama ada kita boleh menggunakan untuk mendapatkan pemandangan SharePoint. Jawapannya adalah "tidak" (atau sekurang-kurangnya, Saya tidak mendakwa ianya mungkin). Walau bagaimanapun, sudah tentu boleh menyukarkan orang ramai untuk menyaksikan pemandangan tertentu.

Saya bermula dengan persekitaran sandbox saya apabila bekerja mengenai perkara ini. Saya menulis tentang persekitaran tersebut di sini: Pantas dan Mudah: Buat Sandbox jQuery Sendiri untuk SharePoint.

Kepada "selamat" gambaran yang, Ikuti langkah ini:

  1. Mencipta satu paparan yang anda mahu untuk mendapatkan. Saya melakukan itu dan menamakannya "Lihat selamat".

    Ini adalah apa yang kelihatan seperti apabila ia tidak "dijamin":

    image

  2. Menambahkan bahagian web editor kandungan dalam paparan laman menggunakan helah yang diterangkan dalam artikel sandbox (Dgn kata lain. Tambah "PageView = berkongsi&ToolPaneView = 2" ke URL).
  3. Memikirkan _spUserId SharePoint anda dengan mengikuti langkah-langkah ini gila, percaya atau tidak:
    1. Log masuk ke dalam persekitaran SharePoint anda.
    2. Dalam medan alamat pelayar web, Jenis: "javascript:berjaga-jaga(_spUserId").
    3. Rekod keputusan (Ia adalah "13" dalam kes saya).

      image

  4. Tambah javascript berikut ke CEWP anda dalam paparan kod:

    <skrip jenis ="text/javascript"
        src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </skrip>
    
    <skrip jenis ="text/javascript">
      $(fungsi() {
    
        berjaga-jaga(_spUserId);
    
        VAR theSecuredView = $(' iframe[FilterLink * = 20View % terjamin]');
    
        jika ((theSecuredView.length > 0) && (_spUserId == 13))
          $(' iframe[FilterLink * = 20View % terjamin]').ibu bapa().ibu bapa().ibu bapa().html("<tr bgcolor = red><td>Tiada paparan untuk anda!</td></tr>");
      });
    
    </skrip>
    

Saya sertakan berjaga-jaga yang(_spUserId) talian di sana untuk menunjukkan bagaimana ini bukanlah benar-benar "mendapatkan" gambaran yang, tetapi hanya menjadikannya lebih sukar untuk melihat. Lanjut mengenai bahawa dalam masa.

Pada asasnya, jQuery sedang mencari iFrame untuk pada halaman yang mempunyai atribut yang mengandungi "Bercagar % 20View" dalam nilai. Setelah ia mendapati, kami menyemak untuk melihat jika pengguna semasa "13". Jika ianya, kami berjalan sehingga DOM untuk yang <TR> Tag (yang aku tahu dengan melihat sumber dan menilik ia) dan kemudian menggantikan tag TR itu dengan mesej saya. Saya benar-benar tidak tahu bagaimana mantap inilah (Saya sangat mencurigakan, sebenarnya), tetapi ia bekerja dalam sandbox saya. Jika saya dapati cara yang lebih baik, Saya akan blog tentang hal itu. Ini adalah keputusan:

image

Saya klik butang OK dan data diganti dengan mesej merah besar:

image

Kerana anda boleh beritahu, cara saya melaksanakan penyelesaian "Keselamatan" ini adalah untuk membolehkan bahagian web untuk membuat sendiri. Selepas ia selesai, Saya menulis kandungannya dengan saya "Tiada paparan untuk anda!"mesej.

Walaupun fakta bahawa ia bukanlah benar-benar "selamat '" Paparan, Ianya mungkin berguna dan dengan beberapa kerja yang pandai, Ia akhirnya boleh menjadi securable dalam erti kata yang lebih formal. Isu asas adalah bahawa pelanggan mendapat semua data dan kemudian, hanya selepas ia mendapat data, Ia wipes. Jika pelanggan mendapat data, pengguna bijak boleh menghalang jQuery yang menjalankan semua dan melihat apa yang dia/dia mahu melihat.

Terdapat kelemahan lain. Pendekatan "Keselamatan" ini adalah berdasarkan dari _spUserId yang. Kita mahu untuk benar-benar selamat berdasarkan model Keselamatan SharePoint penuh, atau sekurang-kurangnya dengan nama pengguna. Yang menjadi lebih sukar secara beransur-ansur, tapi saya melihat beberapa bahan yang baik yang ditulis mengenai perkara ini, Jadi saya berharap ada satu jawapan yang baik untuk masalah itu.

Senarai pemandangan diri perlu dikurangkan, jika boleh. Saya belum cuba untuk memikirkan yang. Saya menganggap ianya mungkin, tetapi benar-benar tidak menyelesaikan isu keselamatan asas kerana seseorang masih hanya boleh menaip URL yang berpendapat mereka mahu (Jika mereka tahu ia). Walau bagaimanapun, mengurangkan akal. Ianya mempunyai kegunaan yang baik dan ia membantu untuk obfuscate perkara-perkara. Jika pengguna akhir tidak tahu bahawa wujud sekiranya paparan, mereka mungkin tidak akan cuba untuk menggunakannya. Kadang-kadang, Itulah sudah memadai.

Dengan nasib, Saya akan bercakap lebih banyak menulis mengenai perkara ini dari semasa ke semasa.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Pantas dan Mudah: Cara yang lebih baik untuk Menggunakan jQuery untuk Sembunyi Field Text pada Borang SharePoint a

Ini merupakan satu lagi jawatan dalam saya siri berterusan bagaimana untuk menggunakan jQuery dengan SharePoint.
Jika anda ingin mengetahui lebih lanjut mengenai jQuery, Saya sangat mengesyorkan: jQuery dalam Tindakan oleh Bear Bibeault dan Yehuda Katz.

Sebelum ini, Saya menulis mengenai cara untuk menggunakan jQuery untuk mengesan dan sembunyikan medan teks pada satu borang. Aku tidak peduli pendekatan yang khusus (Saya adalah ibu bapa chaining - itu hanya tidak dilakukan pada hari ini, sekurang-kurangnya dalam keluarga berkualiti).

Apabila saya mula berfikir tentang hal itu, Saya tahu saya perlu mencari <TR> yang saya boleh dirujuk Sembunyikan() kaedah. Usaha awal saya untuk mencari saluran <TR> adalah sesuatu yang seperti ini:

$('Tr:mempunyai(input[title = Sembunyikan Me!])');

Masalah dengan itu adalah bahawa ia akan mencari setiap <TR> tag yang mempunyai apa-apa hubungan ibu bapa Sembunyikan saya! bidang, walaupun Hide Me! yang bersarang banyak tahap yang mendalam dalam <TR>di. Ternyata bahawa borang sandbox saya, ungkapan yang mendapati 9 TR yang berbeza ini yang telah Sembunyikan Me! sebagai seorang kanak-kanak di suatu tempat di dalam DOM pokok. Saya sedar bahawa saya boleh berjalan kembali pokok dari medan input itu sendiri, Jadi itulah sebabnya bagaimana saya berakhir menyalahgunakan ibu bapa, tetapi ia tidak duduk baik dengan saya.

Saya memberikan beberapa fikir ini dan salah satu perkara yang saya baca akhirnya akal: Saya boleh menggunakan yang tidak() kaedah untuk mengurangkan Keluar <TR>dan saya tidak mahu dalam saya berbalut. Yang membawa saya ke ini:

$('Tr:mempunyai(input[title = Sembunyikan Me!])').tidak('Tr:mempunyai(tr)').menyembunyikan();

Bit pertama mendapati semua pihak <TR> tag yang telah Sembunyikan saya! medan di mana-mana dalam hierarki mereka sendiri. Ia kemudian jalur keluar mana-mana <TR> yang juga mempunyai seorang kanak-kanak <TR>. Ini meninggalkan kita dengan satu <TR> yang:

1) Tidak mempunyai <TR> rekod-rekod kanak-kanak

2) Mempunyai medan input seperti kanak-kanak.

Kemudian, kita boleh mengaplikasikan Sembunyikan() menetapkan kaedah untuk hasilnya dan kami telah selesai.

Saya masih agak gementar mengenai perkara ini, tetapi tidak seperti saraf seperti perantaian ibu bapa.

Saya tidak tahu jika ini adalah amalan terbaik atau tidak. Mungkin ada cara yang lebih sesuai untuk mengenalpasti hanya di <TR> bahawa kita mengambil berat tentang borang SharePoint. Jika anda tahu, sila hantar komen.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Pantas dan Mudah: Gunakan jQuery untuk Sembunyi Field teks pada Borang SharePoint

Ini merupakan satu lagi jawatan dalam saya siri berterusan bagaimana untuk menggunakan jQuery dengan SharePoint.
Jika anda ingin mengetahui lebih lanjut mengenai jQuery, Saya sangat mengesyorkan: jQuery dalam Tindakan oleh Bear Bibeault dan Yehuda Katz.

UPDATE (sudah!): Saya fikir cara yang lebih baik untuk mencari <TR> tag yang saya mahu menyembunyikan dan menulis mengenainya di sini. Anda mungkin masih mendapati artikel ini menarik juga jadi saya leavnig itu sehingga.

Saya mahu menyembunyikan medan teks, "Sembunyikan saya!"seperti yang ditunjukkan:

image

Yang menjelaskan jQuery berikut tidak silap mata tersebut untuk saya:

<skrip jenis ="text/javascript">

  $(fungsi() {


    $(' input[title = Sembunyikan Me!]').ibu bapa().ibu bapa().ibu bapa().menyembunyikan();

  });

</skrip>

Kod mengatakan, "Cari saya semua input bidang tajuk yang = Sembunyi saya!. Kemudian, mendapatkan para ibu bapa dan seterusnya kemudian ibu bapa dan * seterusnya * ibu bapa (phew!) Menginsafi sembunyikan dan() Kaedah atas perkara itu, walau apapun yang terjadi menjadi.

Aku tahu bahawa ibu bapa struktur dengan melihat HTML untuk bentuk yang SharePoint dicipta seperti yang ditunjukkan:

<TR>
    <TD nowrap= "benar" valign= "top" lebar= "190px" kelas= "ms-formlabel">
        <H3 kelas= "ms-standardheader">
            <nobr>Saya menyembunyikan!</nobr>
        </H3>
    </TD>

    <TD valign= "top" kelas= "ms-formbody" lebar= "400px">
        <!-- FieldName = "Sembunyikan saya!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = "SPFieldText"
        -->
        <span dir= "Tiada">
            <input
                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"
                tajuk= "Sembunyikan saya!"
                kelas= "ms-long" />
                <br>
        </span>


    </TD>
</TR>

Gambar ini menunjukkan sama, tetapi ditandakan dengan ibu bapa:

image

Ibu/bapa yang pertama (1) adalah span tag. Ibu-bapa SPAN (2) adalah TD tag dan kemudian akhirnya kami sampai ke sebenar ibu-bapa saya mahu menyembunyikan (3) Itulah tag TR itu sendiri.

Inilah pendekatan yang cukup dahsyat saya fikir kerana ianya amat bergantung kepada struktur spesifiknya borang ini. Apabila SharePoint 2010 Keluar, struktur keseluruhan ini dapat mengubah dan memecahkan pendekatan ini. Apa yang saya benar-benar mahu lakukan adalah kraf PEMILIH jQuery itulah di sepanjang baris "mencari saya di TR (dan hanya TR tag) yang mempunyai tempat dalam elemen kanak-kanak untuk bidang input tajuk yang = Sembunyi saya!". Saya bermula dari bahagian bawah dan dinaikkan. Andaikan saya memikirkan ini, Saya akan hantar untuk dikemaskini "cepat dan mudah ' post.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Pantas dan Mudah: Buat Sandbox jQuery Sendiri untuk SharePoint

Ini merupakan satu lagi jawatan dalam saya siri berterusan bagaimana untuk menggunakan jQuery dengan SharePoint.
Jika anda ingin mengetahui lebih lanjut mengenai jQuery, Saya sangat mengesyorkan: jQuery dalam Tindakan oleh Bear Bibeault dan Yehuda Katz.

Bermula dengan jQuery di SharePoint adalah menghairankan mudah (kepada saya). (Saya mempunyai soalan yang serius tentang pendekatan "amalan terbaik" untuk menggerakkan perkara-perkara ini kepada pengeluaran, Tapi itu untuk hari lain). Saya hanya mula bermain dengan teknologi ini dan untuk mencapai matlamat, Saya telah mencipta suasana sandbox untuk menggunakan. Jika anda sedang mencari untuk mula mengenali jQuery, anda mungkin mendapati pendekatan ini berguna.

1. Mencipta Laman web kosong

Membuat tapak kosong di suatu tempat di laman web anda dan panggil ia sebagai sesuatu yang bijak seperti "jQuery Sandbox".

2. Muat turun jQuery

Anda boleh muat turun di Perpustakaan javascript jQuery agar: http://docs.jquery.com/Downloading_jQuery

Simpan untuk ke desktop anda.

Saya telah menggunakan versi "minified".

3. Mewujudkan sebuah perpustakaan dokumen SharePoint

Di halaman sandbox anda, mewujudkan sebuah perpustakaan dokumen.

4. Meng-upload jQuery Perpustakaan untuk SharePoint

Mencapai pustaka doc yang baru sahaja anda cipta dan upload Perpustakaan jQuery.

5. Mencipta senarai tersuai SharePoint

Saya telah memulakan dengan senarai tersuai kerana saya mahu muck dengan borang SharePoint standard. Anda juga boleh mencipta halaman di Perpustakaan muka surat atau bahagian laman web dan mungkin banyak tempat-tempat lain.

Tambah sesetengah lajur ke senarai tersuai supaya anda mempunyai sesuatu untuk menjalankan jQuery terhadap. Objektif awal saya adalah untuk:

  1. Sembunyi padang bola.
  2. Peruntukan bernilai kepada bidang yang.

Dengan matlamat di minda, Saya menambah dua teks bidang. Dari masa ke masa, Saya akan bermain dengan pautan, imej, carian, dan sebagainya..

6. Ubah suai halaman bahagian NewForm.aspx Web dan menambah sebahagian Web Editor kandungan

Inilah sedikit hitam magic-ish , dalam bahawa ini adalah satu konsep yang baru kepada saya. Saya mula belajar tentang perkara ini dari Paul Grenier, SharePoint jQuery Superstar, di tapak projek CodePlex beliau: http://spff.codeplex.com/.

Ikuti langkah ini untuk menambah CEWP merupakan halaman yang sama yang menunjukkan NewForm.aspx bagi mana-mana senarai tersuai:

  1. Senarai tersuai dan klik baru.
  2. Tambah yang berikut ke URL: PageView = dikongsi&ToolPaneView = 2

Yang akan mengubah borang kemasukan data vanila membosankan dari sesuatu seperti ini:

image

Ini:

image

Menambahkan bahagian web editor kandungan halaman.

7. Menulis jQuery pertama anda kod

Membuka CEWP yang dalam paparan kod dan menambah perkara-perkara berikut:

image

Berikut adalah kod yang sebenar jika anda ingin copy/paste:

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

<skrip jenis ="text/javascript">
  $(fungsi() {

    $('#resultsID').html('Terdapat' + $('a').saiz() + 'satu Tag tag pada halaman ini.');

  });
</skrip>

Keputusan:
<DIV id ='resultsID'></div>
/keputusan

Ambil perhatian bahawa yang pertama <skrip> Tag adalah rujukan Perpustakaan jQuery sebenar. Agaknya, perkara-perkara ini berubah dari masa ke masa, Jadi anda akan mahu untuk pastikan anda yang) Gunakan nama betul dan b) menghala ke Perpustakaan dokumen SharePoint betul.

Bermewah-mewahlah di kemuliaan

Jika anda melakukannya dengan betul, anda akan melihat keputusan yang sama dengan berikut:

image

Membungkus

Ini bukan satu-satunya cara untuk memulakan, tetapi ia adalah cepat, mudah dan terasing dari persekitaran SharePoint sedia ada anda.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Pantas dan Mudah: Gunakan jQuery Set Nilai A Field Text pada Borang SharePoint

Saya mula bermain dengan jQuery semalam. Saya telah lama ingin lakukan ini untuk jangka masa yang panjang, sejak Paul Grenier mula menulis siri Nya tentang jQuery bagi pengguna akhir di dalam kereta kebal www.endusersharepoint.com Laman web. Kerana saya menggunakan, Saya berharap untuk menambah siri "Cepat dan mudah" posting seperti ini. Posting ini menerangkan bagaimana untuk menetapkan nilai di medan teks yang dikenali dengan apa-apa yang anda mahu.

Dalam senario ini, Saya telah mencipta senarai tersuai bentuk "baru" yang kelihatan seperti yang ditunjukkan:

image

Ini adalah borang baru untuk senarai tersuai dengan medan Tajuk lalai dan dua senarai lajur (bukan tapak tiang; Saya tidak fikir ia patut membuat sebarang perbezaan).

Objektif adalah untuk memperuntukkan nilai sewenang-wenangnya untuk ke medan, "DefaultMeFieldNoSpaces" (anda boleh memberitahu saya agak penakut dengan perkara "tiada ruang" yang berlaku di, tetapi saya ceriakan ia pada akhir artikel ini).

Bit ini jQuery yang bekerja untuk saya:

<skrip jenis ="text/javascript">

  $(fungsi() {

    $(' input[Tajuk = DefaultMeFieldNoSpaces]').attr(
        {nilai: ' Anda berada dalam maze twisty tersumbat, Semua serupa.'});

  });

</skrip>

Seperti yang saya faham ini sedikit jQuery mengatakan, "mencari saya apa-apa input tag tajuk yang = DefaultMeFieldNoSpaces. Kemudian, menetapkan semua nilai-nilai mereka kepada frasa terkenal dari permainan komputer yang lama."

Kerana hanya terdapat satu bidang dalam borang dengan tajuk yang sama dengan "DefaultMeFieldNoSpaces" kami adalah polisi bagi memperuntukkan nilai kepada bidang itu dan tidak lain.

Bagaimana pula dengan sebuah padang yang namanya telah kawasan di dalamnya? Ia adalah hampir sama:

<skrip jenis ="text/javascript">

  $(fungsi() {
     $(' input[Tajuk = peruntukkan bidang dengan ruang]').attr(
        {nilai: ' Anda berada dalam maze twisty tersumbat, Semua serupa.'});

  });

</skrip>

Saya rasa ini adalah satu pendekatan yang agak selamat, bermakna bahawa kita harus mampu untuk mencari bidang yang kita mahu dan hanya dalam bidang yang kita mahu. Jika anda melihat HTML SharePoint akan memberi kita, Ia adalah semacam tidak kemas:

<input
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"
tajuk= "DefaultMeFieldNoSpaces"
kelas= "ms-long"
/>

"tajuk" yang menonjol sebagai atribut yang dikenali dan mudah-mudahan unik untuk membantu kita mengenalpasti lajur tertentu yang kita ingin peruntukkan nilai sewenang-wenangnya.

Ini adalah konsep selain. Menetapkan satu bidang dalam cara yang sewenang-wenangnya seperti ini tidak akan menang apa-apa Anugerah. Walau bagaimanapun, Jika kita ingin melakukan hal bentuk peringkat yang lebih menarik (Semua yang kita sentiasa ingin melakukan, sudah tentu, betul-betul selepas kami selesai mencuci pinggan mangkuk), seperti menukar nilai "b bidang" secara automatik berdasarkan nilai "bidang yang", kita (Saya) perlu belajar perkara-perkara ini.

Saya fikir kami peluang terbaik untuk mendapatkan nilai nyata berguna di sini adalah melalui tajuk, sekurang-kurangnya bagi bidang-bidang teks. Mungkin ada yang lebih baik, pendekatan yang lebih dipercayai. Jika saya dapati ia, Saya akan mengemaskini post ini. Jika anda tahu cara yang lebih baik, sila tinggalkan komen.</akhir>

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin