Learn More





DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Skinning Enhancements

I recently had the opportunity to introduce some new designers to the DotNetNuke web application framework. In the process of describing to them the benefits of our flexible skinning architecture, I suddenly realized a limitation to the current model which I had never considered before.

One of the main goals of the skinning architecture is that it allows the designer to work in a familiar environment with standard tools and concepts. The most basic artifact in the web design process is the HTML document itself, and it is at this fundamental level where I recognized a slight flaw. In the current model, the designer must create the HTML document - but as a final step before packaging it with the graphics, CSS, etc... they must manually strip out everything except for the content contained within the area of the document ( ie. remove the entire section and document declarations ).

Acknowledging the fact that this manual step adds an extra task to the skinning process which is clearly not intuitive, it also results in an HTML source document which does not reflect the visual representation created by the designer. This is because of the missing section where the associated CSS ( style sheets ) elements are declared. The result is an HTML skin file which is missing all of the "style" elements when it is viewed in isolation ( ie. it looks like a blank page with skin tokens like [MENU] and [LOGIN] scattered about ).

Now the ironic thing about this whole problem is that DotNetNuke already has a very robust parsing engine which is used to create a user control ( ASCX ) file from the HTML skin file. So why can't the parser simply extract the content from the section automatically? If this were possible then the designer would not need to strip anything from their HTML document and the design could be preserved in its original form. Well, of course this is possible! It was just a matter of coming up with the right Regular Expression. Scott Willhite to the rescue ( Scott is the man responsible for the powerful and elegant skin parsing engine which leverages RegExp extensively )...

So I passed my requirements to Scott and he sent back the following expression:

( which looks like Greek to me )

 Anyways, I added a few lines of code to the SkinFileProcessor and voila - DotNetNuke can now support HTML skin files as standard HTML documents ( including a section with style sheet references ). Look forward to seeing this feature in DNN 3.3 / 4.1.

Oh yeah... thanks again to Scott "Mr. RegExp" Willhite... 


Comment Form

Only registered users may post comments.


2sic Daniel Mettler (124)
Aderson Oliveira (15)
Alec Whittington (11)
Alex Shirley (10)
Andrew Nurse (30)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (22)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (203)
Chris Paterra (55)
Clinton Patterson (28)
Cuong Dang (21)
Daniel Bartholomew (2)
Dave Buckner (2)
David Poindexter (3)
David Rodriguez (2)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (74)
Geoff Barlow (6)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (270)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matthias Schlomann (15)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Mike Horton (19)
Mitchel Sellers (28)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Peter Donker (52)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (2)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (37)
Will Strohl (163)
William Severance (5)
Try Evoq
For Free
Start Free Trial
a Demo
See Evoq Live
Need More Information?