Autofilled Sharepoint's Form
Indonesian:
Dalam tulisan tentang “Multiple Attachment in Document Library” ada satu screenshoot yang sering ditanyakan.
Didalam screen shoot tersebut dapat dilihat bahwa field “Main Library” terisi secara otomatis. Selain itu sebagai informasi tambahan, field yang sudah terisi dengan http GET berubah menjadi read-only.
Bagaimana cara membuat field entry yang dapat terisi secara otomatis?
English:
In my posting about “Multiple Attachment in Document Library” , some friends questioning one of the screenshoot.
In that screenshoot, we can see that “Main Library” field is automatically filled. In addition, the field became read-only but leaving the other un-filled field editable.
How can we create autofill Sharepoint’s form?
Indonesian: (see English version)
Ada banyak cara yang dapat digunakan untuk mewujudkan kebutuhan diatas, misalnya dengan ASPNET, custom control dll. Namun, penting untuk diingat bahwa kita bekerja dengan SharePoint. Sharepoint itu sendiri memiliki filosofi untuk meringankan pekerjaan-pekerjaan coding. Oleh karena itu, solusi berikut ini dilakukan dengan memanfaatkan semaksimal mungkin fasilitas yang ada di Sharepoint.
Modifikasi Upload.aspx secara global
Autofill dapat ditempatkan di halaman masukan mana saja, seperti NewForm.aspx, EditForm.aspx. Namun sesuai dengan gambar diatas, maka kali ini kita akan melakukan modifikasi pada halaman Upload.aspx. Modifikasi dapat dilakukan di masing-masing Document Library dengan menggunakan FrontPage untuk mendapatkan efek hanya di Document Library tertentu saja. Sebaliknya, untuk mendapatkan efek secara global, maka perubahan harus dilakukan di template yang dirujuk oleh site.
Kali ini perubahan akan dilakukan di skema Document Library yang ada di template STS.
c:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\1033\STS
Disana kita akan menemukan folder LIST/DOCLIB, dan didalamnya dapat kita temui file-file sepert Upload.aspx , EditForm.aspx dsb.
Buka file Upload.aspx dengan menggunakan editor teks, kemudian tambahkan javascript yang berguna untuk membaca variabel http GET. (Contohnya, RequestVars.js yang bisa diambil dari internet.)
Saya sendiri menempatkan file RequestVars.js di folder
c:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\LAYOUTS\1033
kemudian menempatkannya di Upload.aspx dengan script,
Notice that <%=System.Threading.Thread.CurrentThread.CurrentUICulture.LCID%> is a server side script to create site language code. (Default: 1033)
Values from http GET will be put in associative array _GET. We create another function to check all keys in _GET and compared with field name in Document Library / List. If it found the same name, then we use DOM to fill field value with the value from _GET. We also protect the field so it won’t be editable anymore. I am so lazy to write the script again, so examine from the picture below.
After finish all script, save Upload.aspx and do iisreset from command prompt. The changes will globaly applied to all Document Library (except, the ever edited Upload.aspx using FrontPage 2003).
Testing
- Create a new Document Library named “TestDocLib”
- Modify the field by adding new string field named “InfoField”
- Try to test the new upload page from TestDocLib
http://[WebSiteName]/TestDocLib/Forms/Upload.aspx?RootFolder=&InfoField=TestInformation
And we will have Autofilled Sharepoint’s Form, in this case “InfoField” value should be “TestInformation”.
All process can be replicated to other entry from such as EditFrom, NewForm etc.