DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Wuih... ternyata adaptasi fitur baru seiring dengan peningkatan kemampuan DotNetNuke Framework semakin mantap saja. Jika dahulu developer harus ber-tips dan trik untuk bisa menggunakan fitur ASP .NET AJAX, kini fitur tersebut sudah tersedia built-in di DotNetNuke versi 4.5 yang akan release. 

Meski demikian, karena fitur ASP .NET AJAX ini berada di luar framework DotNetNuke (terinstall secara terpisah dan dapat Anda download dari situs resmi Microsoft (http://ajax.asp.net/) ), maka DotNetNuke Framework tidak dapat mengasumsikan bahwa web server Anda yang sedang running telah terpasang ASP .NET AJAX. Nah, untuk menangani masalah ini, sebuah kelas baru telah dibuat di dalam DotNetNuke Framework dengan nama DotNetNuke.Framework.AJAX dimana kelas ini menyediakan method-method yang diperlukan oleh developer agar dapat mengintegrasikan AJAX pada solusi mereka.


Setting Dependencies

Salah satu pilihan dalam mendevelop sebuah module DotNetNuke berbasis AJAX adalah kemampuan untuk mengindikasikan adanya System.Web.UI.ScripitManager. Hal ini sekarang sudah bisa dilakukan secara mudah pada module configuration setting. Perhatikan, sekarang di module configuration setting ada tambahan fitur yang disebut dengan Module Dependencies :

Module-module sekarang sudah dapat menspesifikasikan daftar yang dibatasi oleh tanda titik koma yang berisi ketergantungan suatu module terhadap suatu komponen apa saja. Contoh diatas mengindikasikan bahwa module ada dependencies dengan komponen AJAX framework (sebagai contoh, indikasi penggunaan System.Web.UI.ScriptManager berarti module Anda mengharuskan ASP .NET AJAX terinstall dan running dengan baik). Kemudian, pada saat instalasi module, jika lingkungan server tidak mendukung hak khusus, sebuah pesan akan ditampilkan kepada user dan module tidak akan bisa diinstal. Nice !

IsInstalled and IsEnabled

Jika Anda ingin menggunakan fungsionalitas ASP .NET AJAX *hanya* jika fitur ini telah tersedia di mesin Anda, maka Anda dapat memutuskan untuk tidak menggunakan fitur Dependency dan menggunakan fungsi IsInstalled dan IsEnabled.

IsInstalled berfungsi untuk menguji apakah AJAX tersedia di lingkungan mesin Anda, dan IsEnabled berfungsi untuk memberitahukan kepada DotNetNuke bahwa fitur AJAX di dalamnya akan digunakan.

IsInstalled

Fungsi IsInstalled sangat mudah untuk digunakan dan dapat di cek sebelum fungsionalitas ASP .NET AJAX dipanggil. Fungsi ini akan mengembalikan nilai Boolean (true atau false)

DotNetNuke.Framework.AJAX.IsInstalled()

IsEnabled 

Fungsi IsEnabled harus digunakan untuk memberitahu DotNetNuke bahwa module/skin tersebut menggunakan fitur AJAX pada halaman aktif. 

DotNetNuke.Framework.AJAX.IsEnabled = True

Sample Aplikasi ASP .NET AJAX 

Sample kode aplikasi tersebut dapat di download pada link ini. Sample hanya bisa berjalan dengan baik pada DotNetNuke 4.5.0 atau lebih tinggi. Sample module mendemonstrasikan dukungan penggunaan ASP .NET AJAX pada saat runtime.

Imports DotNetNuke
Imports System.Collections.Generic

Namespace DotNetNuke.Modules
Partial Class Ajax
    Inherits Entities.Modules.PortalModuleBase
    Dim CurrentPageIndex As Integer
    Dim boolUsingAjax As Boolean = False
   
        Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            If DotNetNuke.Framework.AJAX.IsInstalled() Then
                If dllAjax.SelectedValue = "Using Ajax" Then
                    boolUsingAjax = True
                Else
                    boolUsingAjax = False
                End If
            Else
                boolUsingAjax = False
            End If

            If boolUsingAjax = True Then
                DotNetNuke.Framework.AJAX.IsEnabled = True
            Else
                DotNetNuke.Framework.AJAX.UpdatePanelControl.Visible = False
            End If

            If Not Page.IsPostBack Then
                ShowData(1)
            End If

        End Sub

        Private Sub ShowData(ByVal intCurrentPageIndex As Integer)

            Dim mySqlString As New StringBuilder()

            mySqlString.Append("SELECT FriendlyName, Description ")
            mySqlString.Append("FROM {databaseOwner}{objectQualifier}DesktopModules ")
            mySqlString.Append("ORDER BY FriendlyName")

            Dim colDesktopModules As New List(Of myDesktopModules)

            Using dr As IDataReader = _
                CType(DataProvider.Instance().ExecuteSQL(mySqlString.ToString(), Nothing), IDataReader)
                While dr.Read
                    Dim objDesktopModules As New myDesktopModules()
                    objDesktopModules.FriendlyName = Convert.ToString(dr("FriendlyName"))
                    objDesktopModules.Description = Convert.ToString(dr("Description"))
                    colDesktopModules.Add(objDesktopModules)
                End While
            End Using

            Dim pagedData As New PagedDataSource()
            pagedData.DataSource = colDesktopModules
            pagedData.AllowPaging = True
            pagedData.PageSize = 10
            pagedData.CurrentPageIndex = intCurrentPageIndex - 1

            Me.lblTotalPages.Text = Convert.ToString(pagedData.PageCount)
            Me.lblCurrentPage.Text = Convert.ToString(pagedData.CurrentPageIndex + 1)

            If pagedData.IsFirstPage Then
                btnPrevious.Visible = False
            Else
                btnPrevious.Visible = True
            End If
            If pagedData.IsLastPage Then
                btnNext.Visible = False
            Else
                btnNext.Visible = True
            End If

            Me.GridView1.DataSource = pagedData
            Me.GridView1.DataBind()

        End Sub

    Protected Sub Next_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        CurrentPageIndex = Convert.ToInt32(Me.lblCurrentPage.Text) + 1
        ShowData(CurrentPageIndex)
    End Sub

    Protected Sub btnPrevious_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        CurrentPageIndex = Convert.ToInt32(Me.lblCurrentPage.Text) - 1
        ShowData(CurrentPageIndex)
    End Sub
End Class

Public Class myDesktopModules
    Dim _FriendlyName As String
    Dim _Description As String
    Public Property FriendlyName() As String
            Get
                Return _FriendlyName
        End Get
        Set(ByVal value As String)
            _FriendlyName = value
        End Set
    End Property
    Public Property Description() As String
            Get
                Return _Description
            End Get
            Set(ByVal value As String)
                _Description = value
        End Set
    End Property

End Class

End Namespace

  

The ASP.NET AJAX Partial Rendering Host Setting

Sebagai tambahan, pengaturan partial rendering pada level modul/skin kini dapat diaktifkan/nonaktifkan dengan mudah melalui menu Host Settings. Jadi, bagi Administrator yang mengizinkan pengembangan module yang menggunakan ASP .NET AJAX, aktifkan saja fitur ini. Fitur baru tersebut disebut Partial Rendering Enabled dan diletakkan pada bagian Performance Settings

Cool !

Share this post: | | | |
Published Monday, March 12, 2007 12:17 PM by agung
Filed under:

Comments

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Hhhmmm.... bener-bener "cantik" (banget) cara DotNetNuke mengakomodasi AJAX.NET :-)

DotNetNuke.Framework.AJAX ? Cooolll....

Syukur banget euy, arsitektur nya seperti ini.

Daripada terlalu terintegrasi dengan AJAX.NET, ntar klo' nginstall malah HARUS ada AJAX.NET lagi.

Waaaahhh... cape dech.... :-(.

DotNetNuke 4.5 ::

- Ndak pakai AJAX.NET ? ok...

- Mau pakai AJAX.NET ? silahkan baca artikel menarik dari Pak Agung :-)

Waduuhhhh... tgl 15 lama banget ya ? :-(

Monday, March 12, 2007 5:35 PM by muhammadsudirman

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Memangnya dotnetnuke 4.5 dah keluar yah? Kok liat di situsnya belum ada.

Monday, March 12, 2007 6:10 PM by fun-e

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Belum, public release baru nanti tanggal 15 Maret.

Sabar yo :)

Tuesday, March 13, 2007 12:04 PM by agung

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Ups... go to http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1358/Default.aspx

:-(

I post similar comment at that posting.

Tuesday, March 13, 2007 1:27 PM by muhammadsudirman

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Yup. It's ok. You can go wherever you like. Untuk mereka yang low bandwidth, geeks.netindonesia.net/blogs bisa sangat berguna sebab servernya join ke IIX dan relatif lebih cepat diakses dari Indonesia.

Saya sendiri, dan mungkin kebanyakan dari kita, kadang lebih senang lihat informasi yang "what's new" melalui aggregate blog ini, kemudian barulah menjelajah untuk lebih detailnya.

That's why i post something that hopefully important to know about DNN. Just share the informations, that the mission.

Tuesday, March 13, 2007 1:47 PM by agung

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Oh iya Pak Agung.

sekalian ngomong-ngomong http://geeks.netindonesia.net/blogs, gimana menurut Anda dengan http://muhammadsudirman.blogspot.com/2007/03/lambat-banget-di-geeksnetindonesianetbl.html ?

kali aja Pak Agung ada ide.

Tuesday, March 13, 2007 4:09 PM by muhammadsudirman

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Thanks atas perhatiannya. Kami sangat menghargai mereka yang care demi kemajuan INDC.

Admin INDC sedang coba handling problem ini. Sekedar diketahui bahwa server INDC merupakan server 'patungan' para foundernya dulu. Kemudian di donasi oleh Microsoft untuk bandwidthnya di Indosat. Saat ini, dengan kapasitas seadanya, ada banyak sekali domain di dalamnya yang tentu saja semua tumplek-plek jadi satu. :)

Ketika masih awal-awal (saat masih di http://blogs.netindonesia.net) tingkat kebutuhan dan domain yang dihandle di dalamnya masih kecil dan relatif sedikit. Tapi sekarang sudah banyak sekali. Tentunya ini akan berimbas pada performance.

Kita sedang coba upgrade hardware. Info ini sudah pernah kami bicarakan saat meeting INDC dan juga saya tembuskan ke mas Risman. Sambil menunggu kedatang pak Kunto (admin INDC) dari belajar Windows Server 2003 di Bangkok, mungkin kondisinya masih apa adanya. Semoga nanti ilmu yang di dapat pak Kunto bisa diimplementasikan di server INDC.

Oh iya, satu hal lagi. Server INDC tidak dimanage oleh Microsoft. Tapi pure oleh komunitas. Jadi, tidak semua case harus kita handle satu per satu. Yang critical barulah kita akan handle. Tentunya disesuaikan dengan kondisi, ketersediaan, dan waktu yang kami miliki.

Btw, jika melihat dari hasil http://www.websiteoptimization.com/services/analyze/ dan memasukkan url http://geeks.netindonesia.net/blogs, masih make sense kok. Trust me, blog ini akan lebih baik nantinya. Kami melakukan semua peningkatan ini dengan *** cita kok. :)

Post something donk untuk help improve our blog quality ? :p

Tuesday, March 13, 2007 6:34 PM by agung

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

(seperti biasa) jawaban mu (selalu) memuaskan.

Thanks Pak Agung :-)

Wednesday, March 14, 2007 8:34 AM by muhammadsudirman

# re: DotNetNuke 4.5 - Now Support ASP .NET AJAX !

Yah... susah-susah install AJAX di DNN, malah udah keluar. hiks.. nasib-nasib... );

Coba dari dulu-dulu...

nb : kapan buku DNN versi indonesianya release??

Friday, March 16, 2007 11:29 AM by erwin