August 23, 2008

Creating custom menu in Documentum 6

WDK of Documentum 6 brings in come major enhancement for developers. The new library is Section 508 compliant and has also undergone user testing for accessibility and usability by the NFB (National Federation for the Blind). The list of new features is a big list including change to UI like right-click context menus, XML-based fixed menus that can be modified or extended, Configurable keyboard shortcuts etc. In this post we will see how to add a menu to the menu bar using configuration elements rather than extending menubar component.

In previous versions on WDK, you would have extended the menubar component and placed the xml in custom/config folder. You would also move the menubar.jsp with your new menu and menu items. In D6, things are little different. Let me quote from WDK tutorial PDF:
In earlier versions of the Web Development Kit, you would extend and override the configuration information files that come with the product as shipped. That approach still works. However, in Version 6, you have the option of modifying the user interface by adding, removing, or replacing individual configuration elements.
And this is exactly what we are going to do today. The concept of configuration elements is a great advantage to developers. By just changing XMLs you can modify the component. There is no need to extend each component for a minor change. This concept also makes the customizations more manageable and developer friendly.

WDK introduces component modification instead of extending it. To modify a specific component all you have to do is create a XML file in custom/config and specify the component you need to modify using modifies attribute of component element. Have a look at the below XML where I simply add a new menu item in tool menu of the webtop:
<config>
<scope>
<menuconfig modifies="menubar_tools_menu:webcomponent/config/library/menubar/menubar_component.xml">
<insert path="menu[name=tools_menu]">
<actionmenuitem dynamic = "genericnoselect"
name = "hello_world_menu_item"
id = "hello_world_menu_item"
value = "Hello World"
action = "hello_world_action"
showifinvalid = "true"/>
</insert>
</menuconfig>
</scope>
</config>
The XML is simple and clean. In earlier versions, you will have used the “extends” attribute and specified the component you are extending. Here we just specify the component you want to modify and specify the section (in the above case menubar_tools_menu). WDK offers five different configuration elements: insert, insertafter, insertbefore, replace and remove. You can use these elements to modify any component.

An important change to notice is the way how menu component works. If you open menubar_component.xml in /webcomponent/config/library/menubar you will notice that all the menu and menu items are declared as part of the component.In previous versions, this would have been part of the JSP. Also notice each menu is defined by the tag menuconfig. These entire menus are declared in menuconfigids element as shown below:
<menuconfigids>
<id>menubar_file_menu</id>
<id>menubar_edit_menu</id>
<id>menubar_view_menu</id>
<id>menubar_tools_menu</id>
</menuconfigids>
To add a new menu, we will have to modify the menuconfigids and our custom menu into it. Let’s see how we will insert a new menu into menuconfigids:
<component modifies="menubar:webcomponent/config/library/menubar/menubar_component.xml">
<replace path="menuconfigids">
<menuconfigids>
<id>menubar_file_menu</id>
<id>menubar_tools_menu</id>
<id>my_tools_menu</id>
</menuconfigids>
</replace>
</component>
And to define the menu and one menu item:
<menuconfig id="my_tools_menu">
<menu name="Level1" value="Level One">
<actionmenuitem dynamic = "genericnoselect"
name = "hello_world_menu_itemx"
id = "hello_world_menu_itemx"
value = "Hello World"
action = "hello_world_action"
showifinvalid = "true"/>
</menu>
</menuconfig>
So finally we have a single XML containing the above two fragments:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<config version="1.0">
<scope>
<menuconfig id="my_tools_menu">
<menu name="Level1" value="Level One">
<actionmenuitem dynamic = "genericnoselect"
name = "hello_world_menu_itemx"
id = "hello_world_menu_itemx"
value = "Hello World1"
action = "hello_world_action"
showifinvalid = "true"/>
</menu>
</menuconfig>
<component modifies="menubar:webcomponent/config/library/menubar/menubar_component.xml">
<replace path="menuconfigids">
<menuconfigids>
<id>menubar_file_menu</id>
<id>menubar_tools_menu</id>
<id>my_tools_menu</id>
</menuconfigids>
</replace>
</component>
</scope>
</config>
A simple WDK refresh will make your menu appear on webtop! That's all and it's time for a hot tea :)

August 01, 2008

Experience with Cuil

Cuil, the new search engine seems to be a big buzz on internet this week. This is mainly for two reasons: One, they claim to have indexed more web sites than Google and second that it was developed by ex-Google employees. Even with these claims, I feel the search engine poor to Google or other competing search engine. The only stand out being the way they display search results. Here is my experience using cuil.

Starting with the name “cuil”, which is pronounced cool, does not sound good! This might be very personal comment and might sound irrelevant compared to other experience I had. Google has become an english word we commonly say “I am going to google it”. But “I am going to cuil (cool) it” sounds little wired.

Leave apart the silly issue, I found cuil delivering me irrelevant data and redundant once. My first test on the search engine was to search for my-self! Interesting thing is showed me pictures of someone else. It also to me to an explicit site when safe search was turned on! Regarding the redundant results entries, the engine displayed the same entries on far pages.

Other issue with the engine is that they do not have much of a preference. You can only can only turn on/off the safe search and typing suggestions. There is no search by file type, date, etc.

Major advantage is how the results are displayed. On searching “java programming”, the engine provided me an accordion on exploring by categories. But it’s sad that cuil do not suggest word if you miss spell!

So, what do you think? Can a product developed by ex-Google employees be so badly written? Or is it just the beginning of a new search engine? Because Google was not built in a day!

July 22, 2008

I am frustrated with Geronimo!

For those who don’t know, Geronimo is a project from Apache aimed in creating a Java EE 5 application server using open source. It is also certified by Sun for its compatibility with java EE specification. Apache claims the server to be very developer friendly, easy to use and easily integrate with IDEs like Eclipse. All my hopes failed when in installed it on my Vista!

Yes, I am a frustrated developer now! My laptop comes with Vista Home and I am simply not able to start the Geronimo server on it. At the same time, I am able to run the server and play with it on other Microsoft OS like Windows XP, Windows Server 2003.
So what did I do? I contacted the Geronimo user group at Nabble forums. After one week I still have no solution! Its not that I got a reply.. Its simply that none of the options work out. Here is what I have tried so far:
  • Try running the server from C:\geronimo
  • Try running the server from C:\user\\geronimo
  • Try running the server from another Drive
  • Try running the server from C:\Program Files\geronimo
  • Try running the server after disabling firewall in the above mentioned locations.

Does anybody have a solution???

July 09, 2008

What is Cross Site Scripting (XSS)?

Web sites have become quite complex and dynamic in nature these days. They have incorporated features that increase user experience and make browsing enjoyable. With new features come new troubles too. One major and popular threat is "Cross Site Scripting" but security professionals call it XSS. In this article, I will explain what it is and how as a netizen, avoid an attack.

So, what is XSS? Cross Site Scripting (XSS) is said to occur when a web site collect malicious data from a user. The attacker adds the malicious code in a form or link. Usually the code is encoded in HEX or other encoding methods. For a normal user the link or form appears normal and part of the web site. On accessing these links, the data about the user collected. Along with this, the code creates an output that looks genuine. For example, Orkut user would have received java script that can be executed through the Orkut scrap box. The script gives interesting output that look harmless but, it is easy for the attacker to hijack my session and use it.

XSS can be in the form of JavaScript, VBScript, ActiveX, HTML, or Flash. And using XSS you can hijack accounts, manipulate with user settings, steal cookies or poison them, and also do false advertising. This attack can even occur on a secured site too. The lock on your browser does not mean that you are secure for XSS!

So what do we do? As a common user here are few things that you can do to prevent XSS attack:
  • Always follow links from the main website. For example, if you see link to news article of site X on site Y. It is better to open site X, use its menu or search feature to get the news or article.
  • Think twice before you click on ads placed on less know web sites. If an ad interests you, google it and view the site!
  • Be careful in opening your emails, its attachments etc.
  • Keep internet security at high level in your browser.
These actions might help you from XSS attack. At the same time, browser vendors like Mozilla and Microsoft have started their war against this attack. IE8 team recently demonstrated their XSS filter on IEblog. From Firefox, you already have add-ons that help you detect and prevent XSS.

June 25, 2008

Nokia to open source Symbian and start a new revolution

Big mobile players Nokia, Sony Ericsson, Motorola and NTT DOCOMO anounced they are all set to open source the Symbian mobile OS. Nokia will buy 52% of Symbian. This acquisition will be the first step in the establishment of the 'Symbian Foundation'. And Nokia will join two other major platforms; Google's Android operating system and Apple's OS X iPhone.

The new foundation will provide unified platform with common UI framework. Initially, they will release selected components as open source and gradually make the complete software open source. The platform is intended to be released under Eclipse Public License (EPL) 1.0. Nokia had recently acquired Trolltech which also provide a mobile software platform. But now, they will have the most widely used mobile OS unified and taking on Android and iPhone!