Melihat postingan mengenai SharePoint disini, saya tertarik untuk membuat hal yang sama pada DNN module.
Selama ini memang WebParts Developer dan juga DNN Module Developer sering dipusingkan dengan cara pembuatan module. Anda harus begini, Anda harus begitu, dan seterusnya dan seterusnya. Bagaimana jika kita kurangi sedikit kompleksitas dalam pembuatan module DNN.
Langkah 1 - Buatlah aplikasi ASP .NET biasa. Gunakan pendekatan Web Application Project (WAP) agar kita bisa mendapatkan hasil output berupa file .DLL. Atau Anda bisa gunakan asp.net compiler yang dibuat oleh Rick Strahl dari West Winds. Download disini. Perhatikan bahwa Anda tetap harus menggunakan pendekatan web user control (.ascx) pada project Anda. Gunakan file Default.aspx untuk menguji fungsionalitas web user control Anda. Build project Anda dan pastikan tidak terjadi kesalahan.
Saya membuat contoh project ASP .NET Web Application dengan nama HRApplication dan disimpan pada lokasi C:\Website.
Berikutnya, saya menambahkan sebuah file berjenis web user control bernama MyCalendar.ascx.
Saya tambahkan sebuah kontrol kalendar ke dalamnya.
Saya tambahkan lagi sebuah file web user control bernama ShowEmployee.ascx. Drag sebuah GridView ke dalamnya. Saya buat beberapa baris code untuk sekedar melakukan simple binding ke dalamnya sebagai berikut :
protected void Page_Load(object sender, EventArgs e) {
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("Nama", typeof(string)));
dt.Columns.Add(new DataColumn("Alamat", typeof(string)));
for (int i = 0; i < 11; i++) {
DataRow row = dt.NewRow();
row["ID"] = i.ToString();
row["Nama"] = "Nama-" + i.ToString();
row["Alamat"] = "Alamat-" + i.ToString();
dt.Rows.Add(row);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
Kemudian masing-masing .ascx tersebut saya test ke dalam Default.aspx.
Kemudian saya Build. Dan hasilnya saya lihat pada browser untuk memastikan tidak ada kesalahan.
Ok. Project kita sudah beres. Ingat, yang barusan dibuat adalah project bertipe ASP .NET Web Application biasa.
Langkah 2 - Upload file .ascx yang Anda ingin jadikan DNN module ke dalam folder [rootDNN]\DesktopModules\SmartDNNControl\UserControls.
Lokasi awal file MyCalendar.ascx dan ShowEmployee.ascx pada C:\Website\HRApplication
File-file tersebut akan saya salin file tersebut ke dalam folder [rootDNN]\DesktopModules\SmartDNNControl\UserControls
Langkah 3 - Upload file .dll hasil build Anda ke dalam folder bin website DNN Anda.
Lokasi awal file HRApplication.dll ada pada C:\Website\HRApplication
Saya salin ke dalam folder [rootDNN]\bin
Langkah 4 - Install modul SmartDNNControl ke dalam web DNN Anda. Pastikan Anda melihatnya pada daftar module di dalam Control Panel.
Langkah 5 - Letakkan modul tersebut pada halaman mana saja yang Anda inginkan. Isikan Module Title dan nama User Control-nya. Jangan khawatir jika Anda salah mengisikan, SmartDNNControl akan cukup cerdas mengetahui apakah file Anda sudah terupload sebelumnya atau belum. Klik tombol Create Module.
Voila ! Anda sudah mendapatkan modul DNN yang bebas dari kompleksitas pembuatan modul DNN.
Anda juga dapat menempelkan SmartDNNControl ke dalam halaman web DNN Anda sebanyak yang Anda mau. Di dalam project HRApplication di atas saya memiliki dua user control yang masing-masing bernama MyCalendar.ascx dan ShowEmployee.ascx. Dan saya tampilkan keduanya sebagai modul di dalam halaman yang sama menggunakan SmartDNNControl.
Release pertama dari SmartDNNControl ini original tidak mencontek dari kode manapun. Murni ide dan implementasi sendiri. :)
Saya sedang rapihkan fungsionalitas modulnya. Next, saya akan sharing kode sumbernya agar dapat Anda gunakan dan modifikasi. Ide saya adalah bagaimana SmartDNNControl ini bisa mengkonversi satu project ASP .NET biasa ke dalam DNN dengan seminimal mungkin usaha sehingga Anda benar-benar dapat dibebaskan dari kompleksitas membangun website DNN dan tetap dapat bekerja dengan aplikasi ASP .NET biasa.
Hey, apakah saya lupa mengingatkan Anda bahwa Anda bahkan tidak menyentuh interface DNN sama sekali ? :-)
Stay tune !