erwin

DotNetNuke expert? no, I'm just DNN Skins expert.
See also: Other Geeks@INDC

December 2006 - Posts

Dev : EnMore - Touchscreen web application using DotNetNuke and AJAX

EnMore - Touchscreen web application using DotNetNuke and AJAX

Tools :
- Dotnetnuke 4.3.7
- ASP.Net 2.0 AJAX

Sampai sekarang fase developing EnMore Touchscreen masih terus berlangsung. Banyak kesulitan yang dihadapi, dari cara instalasi Ajax kedalam Portal DotNetNuke yang ternyata sedikit berbeda sehingga lumayan menyita waktu, lihat cara instalasi ajax pada dotnetnuke :

http://geeks.netindonesia.net/blogs/erwin/archive/2006/12/11/Instalasi-AJAX-pada-DotNetNuke.aspx

Serta pemakaian Ajax pada DotNetNuke yang masih harus di sesuaikan dengan kebutuhan aplikasi.

Banyak juga pengalaman lucu, salah satunya kegembiraan sementara yang harus di terima, setelah apa yang di tuju dikira sudah tercapai (tiwas wis seneng...), yang ternyata masih salah juga (hehehe.... ~_~" ).

Datalist, banyak sekali pemakaiannya pada aplikasi ini, salah satunya adalah peletakan animation pada ajax didalamnya yang ternyata animation hanya mensuport untuk kebutuhan Not Auto Post Back, padahal yang di harapkan adalah page refresh dan memunculkan data yang diharapkan. Datalist di dalam datalist di dalam datalist (kata-kata yang aneh), tapi inilah yang terjadi. Padahal ini masih di design UI-nya, ini pun sudah memakan waktu yang cukup lama.

hope is done before death line.....

Share this post: | | | |
Posted: Dec 22 2006, 11:03 AM by erwin | with no comments
Filed under:
Instalasi AJAX pada DotNetNuke

Untuk dapat menggunakan silahkan download dan install pada komputer anday Microsoft ASP.NET AJAX v1.0 BETA 2 dan ASP.NET AJAX Control Toolkit.

Letakkan beberapa file berikut pada directory bin :

  • Microsoft.Web.Extensions.dll (ASP.NET AJAX v1.0)
  • Microsoft.Web.Extensions.Design.dll (ASP.NET AJAX v1.0)
  • AJAXExtensionsToolbox.dll (ASP.NET AJAX v1.0)
  • AjaxControlToolkit.dll (ASP.NET AJAX Control Toolkit)

Serta copy folder ScriptLibrary (ASP.NET AJAX v1.0) ke folder root dari DotNetNuke.

  • Microsoft.Web.Extensions.dll (ASP.NET AJAX v1.0)
  • Microsoft.Web.Extensions.Design.dll (ASP.NET AJAX v1.0)
  • AJAXExtensionsToolbox.dll (ASP.NET AJAX v1.0)
  • AjaxControlToolkit.dll (ASP.NET AJAX Control Toolkit)

Serta copy folder ScriptLibrary (ASP.NET AJAX v1.0) ke folder root dari DotNetNuke.

Cara yang di gunakan hampir sama dengan yang di ajarkan, yaitu dengan mencustomize/menambahkan beberapa configurasi yang di perlukan pada Site Configuration [Web.Config], seperti di bawah ini : 

<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="microsoft.web" type="Microsoft.Web.Configuration.MicrosoftWebSectionGroup,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="Microsoft.Web.Configuration.ScriptingSectionGroup,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="webServices" type="Microsoft.Web.Configuration.ScriptingWebServicesSectionGroup,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="Microsoft.Web.Configuration.ScriptingJsonSerializationSection,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false" />
<section name="profileService" type="Microsoft.Web.Configuration.ScriptingProfileServiceSection,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false" />
<section name="authenticationService" type="Microsoft.Web.Configuration.ScriptingAuthenticationServiceSection,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>

<system.web>
<pages>
<controls>
<add tagPrefix="asp" namespace="Microsoft.Web.UI"
assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="Microsoft.Web.UI.Controls"
assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>
<tagMapping>
<add tagType="System.Web.UI.WebControls.CompareValidator"
mappedTagType="Microsoft.Web.UI.Compatibility.CompareValidator,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.CustomValidator"
mappedTagType="Microsoft.Web.UI.Compatibility.CustomValidator,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.RangeValidator"
mappedTagType="Microsoft.Web.UI.Compatibility.RangeValidator,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.RegularExpressionValidator"
mappedTagType="Microsoft.Web.UI.Compatibility.RegularExpressionValidator,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.RequiredFieldValidator"
mappedTagType="Microsoft.Web.UI.Compatibility.RequiredFieldValidator,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagType="System.Web.UI.WebControls.ValidationSummary"
mappedTagType="Microsoft.Web.UI.Compatibility.ValidationSummary,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</tagMapping>
</pages>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
-->

<compilation debug="false">
<assemblies>
<add assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>

<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler"  validate="false"/>
</httpHandlers>

<httpModules>
<add name="WebResourceCompression" type="Microsoft.Web.Handlers.WebResourceCompressionModule,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptModule" type="Microsoft.Web.UI.ScriptModule,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web> <microsoft.web>
<scripting>
<webServices>
<!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
<!--

<jsonSerialization maxJsonLength="500">
<converters>
<add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
</converters>
</jsonSerialization>
-->


<!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
<!--
<authenticationService enabled="true" requireSSL = "true|false"/>
-->


<!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
and modified in Atlas applications, you need to add each property name to the setProperties and
getProperties attributes. -->
<!--
<profileService enabled="true"
setProperties="propertyname1,propertyname2"
getProperties="propertyname1,propertyname2" />
-->

</webServices>
</scripting>
</microsoft.web>

<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>

<modules>
<add name="ScriptModule" preCondition="integratedMode" type="Microsoft.Web.UI.ScriptModule,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>

<handlers>
<remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="Microsoft.Web.Script.Services.ScriptHandlerFactory,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>
</system.webServer>
</configuration>


Penting

Pada bagian akhir, check value dari parameter xhtmlconformance. Perlu diingat, mode harus di set menjadi "Transitional" agar dapat menggunakan ASP.NET AJAX v1.0.
Karena jika hal ini belum dilakukan, akan menyebabkan AJAX tidak berjalan sesuai apa yang di harapkan.

<xhtmlconformance mode="Transitional">

Peletakan Script Manager

ScriptManager, object dari ASP.NET AJAX harus ada pada skin yang akan digunakan pada website dotnetnuke agar dapat digunakan beserta AJAX.

Lokasi skin ASCX anda berada pada  /Root/Portals/_default/Skins/[YourSkin].

Sebagai contoh adalah cara memodifikasi skin DNN-Blue yang merupakan bawaan dari DotNetNuke. Skin DNN-Blue terbagi menjadi 4 buah file ASCX:

  • Horizontal Menu - Fixed Width.ascx
  • Horizontal Menu - Full Width.ascx
  • Vertical Menu - Fixed Width.ascx
  • Vertical Menu - Full Width.ascx

Tambahkan sintaks ScriptManager pada tiap skin (atau hanya pada skin yang digunakan) seperti di bawah ini.

<%@ Control language="vb" CodeBehind="~/admin/Skins/skin.vb" AutoEventWireup="false" Explicit="True" 
           Inherits="DotNetNuke.UI.Skins.Skin" %>
<%@ Register TagPrefix="dnn" TagName="LOGO" src="/dnn/Portals/0/~/Admin/Skins/Logo.ascx" %>
<%@ Register TagPrefix="dnn" TagName="BANNER"
                         src="/dnn/Portals/0/~/Admin/Skins/Banner.ascx" %>
<%@ Register TagPrefix="dnn" TagName="MENU"
                         src="/dnn/Portals/0/~/Admin/Skins/SolPartMenu.ascx" %>
<%@ Register TagPrefix="dnn" TagName="SEARCH"
                         src="/dnn/Portals/0/~/Admin/Skins/Search.ascx" %>
<%@ Register TagPrefix="dnn" TagName="CURRENTDATE"
                         src="/dnn/Portals/0/~/Admin/Skins/CurrentDate.ascx" %>
<%@ Register TagPrefix="dnn" TagName="BREADCRUMB"
                         src="/dnn/Portals/0/~/Admin/Skins/BreadCrumb.ascx" %>
<%@ Register TagPrefix="dnn" TagName="USER" src="/dnn/Portals/0/~/Admin/Skins/User.ascx" %>
<%@ Register TagPrefix="dnn" TagName="LOGIN" src="/dnn/Portals/0/~/Admin/Skins/Login.ascx" %>
<%@ Register TagPrefix="dnn" TagName="COPYRIGHT"
                          src="/dnn/Portals/0/~/Admin/Skins/Copyright.ascx" %>
<%@ Register TagPrefix="dnn" TagName="TERMS"
                          src="/dnn/Portals/0/~/Admin/Skins/Terms.ascx" %>
<%@ Register TagPrefix="dnn" TagName="PRIVACY"
                         src="/dnn/Portals/0/~/Admin/Skins/Privacy.ascx" %>
<%@ Register TagPrefix="dnn" TagName="DOTNETNUKE"
                         src="/dnn/Portals/0/~/Admin/Skins/DotNetNuke.ascx" %>
<%@ Register TagPrefix="dnn" TagName="LANGUAGE"
                         src="/dnn/Portals/0/~/Admin/Skins/Language.ascx" %>

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />

Selamat, installasi of ASP.NET AJAX v1.0 BETA 2 selesai!

erwin yulianto

Share this post: | | | |
Posted: Dec 11 2006, 08:12 PM by erwin | with 1 comment(s)
Filed under: ,
Yahoo group untuk para developer javacript/AJAX

wah ternyata di yahoo juga ada group untuk javascript dan AJAX
check this out :

http://tech.groups.yahoo.com/group/JavaScript_Official/

mungkin kita bisa dapat infomasi atau tanya-tanya seputar AJAX

 

erwin yulianto

Share this post: | | | |
Posted: Dec 11 2006, 08:06 PM by erwin | with no comments
Filed under:
10 Business Reasons to Use AJAX

Over at Agile Ajax the author has posted 10 business reasons to use Ajax.

The reasons consist of:

  1. ASP’s with existing applications.
  2. ISV’s that have products with web-based interfaces.
  3. ISV’s that have products without web-based interfaces.
  4. ISV’s whose products can now be ASP’d.
  5. E-commerce.
  6. Financial services.  
  7. Tool makers.
  8. Infrastructure providers.
  9. Community site providers.
  10. Content providers/Media.

 

  1. ASP's with existing applications. This ship has already sailed. The ASP's include GMail and Yahoo Mail, but extend to places like Salesforce.com, openair.com, and so on. The lower the switching costs, as in the case of email services, the more vulnerable you are to being overtaken by your slicker, more usable AJAX enabled competition. The argument for the consumers of ASP's is simple: reduced labor costs. If you can save 30 seconds on each operation, the ROI is easy to see.
  2. ISV's that have products with web-based interfaces. AJAX has already disturbed the world of portals, with drag-and-drop portlets eliminating the need for clunky layout and content pages. But here the opportunities are vast, covering everything from dashboard and monitoring apps with async updates, OLAP tools with drill-down capabilities, Document Management apps with improved browsing, viewing and search, Workflow and BPM tools with improved diagramming, etc.
  3. ISV's that have products without web-based interfaces. Some applications just didn't translate well to the web. They had rich, direct manipulation interfaces, or some other features that just couldn't be translated into a forms-and-reports webapp. On the development front, modeling tools, which hove lived on the desktop or in client/sever land, are a possible target, as are other products where collaboration may make up for the lack of convenience of an application that requires a network connection to work. Desktop productivity applications, e.g. spreadsheets, word processors, and so on, have been seeing a lot of activity in the development of AJAX, but there I think that the collaborative spreadsheet may be the way to go. Product managers need to analyze whether their previously protected apps now need to put a web face on. That and the next item...
  4. ISV's whose products can now be ASP'd. We've already mentioned the desktop productivity apps as an area of AJAX activity. And anything that can be turned into an AJAX app can also be ASP'd. But the real question is, if you build it, will they come? Desktop productivity apps are not the best candidates for this opportunity if collaboration isn't involved. PowerPoint or other presentation apps that are typically used in environments where connectivity is uncertain will certainly not make the cut. But applications that are used occasionally -- some of Adobe's product line comes to mind: Photoshop, Illustrator, etc. -- and have a big price tag, may be a good fit.
  5. E-commerce. There is the argument that AJAX can help your customers accomplish their tasks more quickly and result in less cart abandonment. The real reason may be credibility, however. This Stanford study back from 2002 shows that credibility is tied to visual design rather than content. If your web site looks like something from last year, you're likely to fall behind in consumer perception. Old Navy has already put some AJAX enable shopping enhancements in place, as have Gap and Banana Republic. Look for other e-tailers to follow their lead.
  6. Financial services. Certainly some of the same credibility arguments apply to Financial Services as they do to E-Commerce, so does Jakob Nielsen's argument for the competitive advantage of usability. The financial services industry has long adopted rich interaction and async update in spots, like ETrade's flash stock information widget. But look for banking, insurance and other providers who offer complex products to adopt the RIA experience offered by AJAX.
     
  7. Tool makers. Technically not a use of AJAX, but closely related. IDE's, frameworks. There's lots of activity on this front. TibCO has entered the the fray with it's GI product, and it does incorporate AJAX -- it runs in the browser. Expect all of the big IDE and tool makers to add support for AJAX if they haven't already. Expect all of the app server vendors to add AJAX support. Same for the web servers, messaging middleware, etc.
  8. Infrastructure providers. Again not technically a use of AJAX, but closely related. Expect a big explosion of new AJAX supporting infrastructure software. Firewalls, load balancers and other network appliances will need to be retooled to meet the new performance needs and profiles of AJAX applications.
  9. Community site providers. The line between forums and chat, bookmarks and collaboration is blurring. Usability, credibility are again part of competitive advantage in this space. Yes, the network effect is the strongest factor, and a nifty AJAX upstart isn't going to dislodge Myspace, but for smaller, less well established community categories, it still could be a factor.
  10. Content providers/Media. This category includes newspapers, magazines, online news sites, etc. This category is a tough call, as it illustrates the conflict between the old web technology and ways of doing things and the new AJAX technology. On the one hand, news and media sites have a proven, bookmarkable, searchable page model that works well with their advertising-driven business model. The bell-weather of newspapers, the NYT, has limited their improvements to collaborative filtering and enhanced multimedia resources, while the WSJ has added some AJAX enabled selection-based search, so the movement here seems somewhat tepid at the moment. Look for improvements that enhance but don't fundamentally change the user experience.

 

Share this post: | | | |
Posted: Dec 07 2006, 04:10 PM by erwin | with no comments
Filed under: ,