Products

Solutions

Resources

Partners

Community

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

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:

<\s*body[^>]*>(?<skin>.*)<\s*/\s*body\s*>
( 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... 

Comments

Comment Form

Only registered users may post comments.

NewsArchives


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Daniels (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
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 (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (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)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out