DNN Blog

Jul 15

Posted by: Ash Prasad
7/15/2011 12:32 PM  RssIcon

DotNetNuke 6 introduces brand new Icon API to be used by module developers and skin designers to access icons and images in a unified way all across the framework. Simply pass a key (e.g. Add, Edit, or Delete) in ascx file or code-behind and get a Url back to an image without worrying about the physical location. No need to type that tilde in the path any more.

 

 

New Shiny Icons

Part of DotNetNuke 6 overhaul, we’ve replaced most of the system icons with a brand new set. The old icons were mostly Gif files, located under \Images folder. The new set are all Png files located under Icons\Sigma folder.

image

Note: None of the older Gif files have been removed, they may have been updated to match the new look and feel, but not removed.

 

New Icon Location

The new system icons are located under WebsiteRoot\Icons\Sigma folder. There are at least two copies of each and every system icon. Example: Edit.gif from pre 6 is now represented as Edit_16X16_Standard.png and Edit_32X32_Standard.png.

The first part of the name is the Icon Key (Edit), the second: size (16X16), and the third style: (Standard).

 image

 

New APIs

There are three new static APIs available to obtain Url for an Icon:

DotNetNuke.Entities.Icons.IconController.IconURL(string key)
DotNetNuke.Entities.Icons.IconController.IconURL(string key, string size)
DotNetNuke.Entities.Icons.IconController.IconURL(string key, string size, string style)   

Instead of using .ImageUrl = “~/images/add.gif”, simply use .ImageUrl = IconController.IconURL(“Add”). 

 

New IconKey property for Web Controls

Similar to ResourceKey property for Web Controls to facilitate Localization, there is a new IconKey property available to major Web Controls which have native ImageUrl property.

These are the controls that support new IconKey property:

asp:Image
asp:ImageButton
asp:HyperLink
asp:HtmlImage
dnn:CommandButton
dnn:ImageCommandColumn
dnn:DnnGridButtonColumn
dnn:DnnImage
dnn:DnnImageButton

Instead of specifying ImageUrl property with relative url of an icon, the new property IconKey=”KEYNAME” and optionally IconSize (default 16x16) and IconStyle (default Standard) can be used without worrying about the physical path. Below is an example:

OLD

ImageUrl="~/images/edit.gif" EditMode="URL" KeyField="UserID" /> 

New

IconKey="Edit" EditMode="URL" KeyField="UserID" />

IconKey property is available on ascx files as well as in code-behind.

 

Roadmap

Currently Icon API supports a hard-coded path (Icons\Sigma) to icons, the upcoming version of this API will have a more configurable path where administrator can easily switch to a new set of icons without affecting the core icons shipped with the product.

Tags: Icon
Categories: Development, Community
Location: Blogs Parent Separator Ash Prasad

10 comment(s) so far...


Gravatar

Re: Icon API – Where’s my tilde?

Wow, I am very, very happy to see this finally reach production. Besides finally getting there, it is very nice to see that the implementation is forward thinking and may not just solve the initial issue raised, but provide new possibilities. Thank you!!
support.dotnetnuke.com/issue/ViewIssue.aspx?id=10606&PROJID=2

By Jeremy Farrance on   7/18/2011 10:43 AM
Gravatar

Re: Icon API – Where’s my tilde?

@Jeremy: Thanks, as always DotNetNuke corp. at service for the community it's proud of :)

By Ash Prasad on   7/18/2011 10:45 AM
Gravatar

Re: Icon API – Where’s my tilde?

Hi,

Great addition to the core! ;-) It could be usefull to have a method to retrieve available icon sets (GetIconSets or GetIconCollections) and another one to retreive available styles for a specified set (GetStyles).
This will allow module developers to add settings letting portal admin choosing which icon set/style to use.

Gilles

By Gilles Le Pigocher on   7/22/2011 8:05 AM
Gravatar

Re: Icon API – Where’s my tilde?

@Gilles: Thanks for the feeback. I'll add these to the requirements for a future release.

By Ash Prasad on   7/22/2011 8:06 AM
Gravatar

Re: Icon API – Where’s my tilde?

Hi Ash,

Thanks! I forgot something, if we have a method to list IconSets we should be able to specify wich IconSet to use with the API. To do this you will have to create new signatures: IconURL(string iconSet, string key), IconURL(string iconSet, string key), IconURL(string iconSet, string key, string size) and IconURL(string iconSet, string key, string size, string style). This will allow webdesigners to create icon sets for any module using the new API, and module developers could create different icon sets for their module. Best of all, by adding a portal setting to choose which icon set to use by default anyone should be happy! :-)

Gilles

By Gilles Le Pigocher on   7/25/2011 2:37 PM
Gravatar

Re: Icon API – Where’s my tilde?

@Gilles: Thanks for the feeback again. I'll pass these to our product team for a future release.

By Ash Prasad on   7/25/2011 2:40 PM
Gravatar

Re: Icon API – Where’s my tilde?

I wonder, how this new IconKey property gets added to the aspx controls. i.e.
asp:Image
asp:ImageButton
asp:HyperLink
asp:HtmlImage

By Jaydeep Bhatt on   8/9/2011 9:03 AM
Gravatar

Re: Icon API – Where’s my tilde?

@Jaydeep: This is done by hooking into Render event of the Page Lifeycle. For these controls, we look for specific attributes, if found we hookup the ImageUrl property with value derived using IconKey attribute.

To get more details, have a look at: PageBase.cs Render method: dotnetnuke.svn.codeplex.com/svn/Trunk/Library/Framework/PageBase.cs

By Ash Prasad on   8/9/2011 9:17 AM
Gravatar

Re: Icon API – Where’s my tilde?

HI Ash,

Just noticed there is no Print icon, which seems like a fairly obvious one to be there. I'll raise it on Gemini.

Roger

By Roger Selwyn on   2/8/2012 9:15 AM
Gravatar

Re: Icon API – Where’s my tilde?

Thanks Roger. I see your issue in Gemini: support.dotnetnuke.com/issue/ViewIssue.aspx?ID=19813&PROJID=2

Easy one to get resolved. Will keep you posted.

By Ash Prasad on   2/8/2012 9:19 AM
Attend A Webinar
Free Demo Site
Download DotNetNuke Professional Edition Trial
Have Someone Contact Me
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke Corp. is the steward of the DotNetNuke open source project, the most widely adopted Web Content Management Platform for building web sites and web applications on Microsoft. Organizations use DotNetNuke to quickly develop and deploy interactive and dynamic web sites, intranets, extranets and web applications. The DotNetNuke platform is available in a free Community and subscription-based Professional and Enterprise Editions with an Elite Support option. DotNetNuke Corp. also operates the DotNetNuke Store where users purchase third party apps for the platform.