Umbraco - Web developer skinning documentation

27
UMBRACO I/S Umbraco Skins Creating a skin for Umbraco Umbraco 12/23/2010 This document walks through the different components of a skin for Umbraco. It is based on the Umbraco Simple Starter Kit which serves as a simple base for applying your own skins. Important note: The descriptions and screen shots in this document are preliminary, based on a beta version, and are subject to change prior to final release.

Transcript of Umbraco - Web developer skinning documentation

Page 1: Umbraco - Web developer skinning documentation

UMBRACO I/S

Umbraco Skins

Creating a skin for Umbraco

Umbraco

12/23/2010

This document walks through the different components of a skin for Umbraco. It is based on the Umbraco

Simple Starter Kit which serves as a simple base for applying your own skins. Important note: The

descriptions and screen shots in this document are preliminary, based on a beta version, and are subject to

change prior to final release.

Page 2: Umbraco - Web developer skinning documentation

2 umbraco.org | About Skins – Beta | Umbraco I/S

Contents

About Skins ........................................................................................................................................................ 4

How do Skins Work in Umbraco? .............................................................................................................. 4

What Can a Skin Change? .......................................................................................................................... 4

How Do You Customize a Skin? ................................................................................................................. 5

Changing Skins ........................................................................................................................................... 6

Advanced Skins .............................................................................................................................................. 7

The Structure of a Skin .................................................................................................................................. 9

What Does a Skin Package Contain? ......................................................................................................... 9

Supported Website Starter Kits ................................................................................................................... 10

Applying a Skin from the Installation Wizard .............................................................................................. 11

Creating Skins .................................................................................................................................................. 12

Steps to Create a Skin .................................................................................................................................. 12

Required Files .......................................................................................................................................... 12

The Skin Manifest .................................................................................................................................... 13

Optional Files ........................................................................................................................................... 16

Packaging the Skin ................................................................................................................................... 16

Testing the Skin ........................................................................................................................................... 16

Submitting the Skin to the Repository ........................................................................................................ 17

Enabling a Starter Kit to Support Skins .................................................................................................... 17

Walkthrough: Creating a Skin for Simple Starter Kit ...................................................................................... 18

Step 1 – Install the Starter Kit Developer Package .................................................................................. 18

Step 2 – Create a Stylesheet .................................................................................................................... 18

Step 3 - Modifying the Template HTML .................................................................................................. 18

Step 4 - Preparing and Packaging the Skin ............................................................................................. 18

Step 5 - Testing a Skin .............................................................................................................................. 19

Advanced Skin Tasks .................................................................................................................................... 19

Altering Template Markup ...................................................................................................................... 19

Allowing for User customization of a Skin ............................................................................................... 20

Reference......................................................................................................................................................... 22

Dependency Types ...................................................................................................................................... 22

Text .......................................................................................................................................................... 22

Image ....................................................................................................................................................... 22

Page 3: Umbraco - Web developer skinning documentation

3 umbraco.org | About Skins – Beta | Umbraco I/S

Color ............................................................................................................................................................ 22

Option .......................................................................................................................................................... 23

Slider ............................................................................................................................................................ 23

Task Types ................................................................................................................................................... 23

ModifyCSS Task ........................................................................................................................................ 23

ModifyTemplate Task .............................................................................................................................. 24

AddStyleSheetToTemplate Task .............................................................................................................. 25

Page 4: Umbraco - Web developer skinning documentation

4 umbraco.org | About Skins – Beta | Umbraco I/S

About Skins

How do Skins Work in Umbraco?

When you apply a skin to an Umbraco site, the skin’s styles are used in place of the existing site’s styles.

This is accomplished simply by providing a unique CSS file for the skin, including any images required to

achieve the layout defined by the CSS. A skin can also add or change small portions of the site’s HTML

Templates if needed. In addition, a skin can be customized by the user by adding such items as custom

label text or custom logo images. All CSS, images, and HTML changes can be rolled back to the default skin

for a site as Umbraco creates a backup of the default skin when a new skin is applied.

By default, skins can be applied to the Umbraco Starter Kits; Simple, Blog, Personal, and Business. In order

to apply or change a skin, the user simply navigates to the Settings section, selects the Master Template,

then clicks the Modify Template Skin button. Umbraco will launch the Skin Customization dialog in the

Canvas Editing mode.

What Can a Skin Change?

The recommend approach is that a skin changes only the CSS and related images and script for a site. If

needed a skin may also change small snippets of HTML, such as to add an “id” to an element or create a

new <div> for layout control. In this way, skins are kept as independent of a site’s markup as possible and

maintain maximum flexibility. A skin may also introduce a unique set of script, generally javascript, to add

functionality related to the skin. In addition, a skin may include images used for layout and styling.

Skin Example

For example, in the default Starterkit.Master Template contains this markup:

<asp:contentplaceholder id="cp_top" runat="server">

<div id="top">

<h1 id="siteName"><a href="/"><umbraco:Item runat="server" field="siteName"

recursive="true" /></a></h1>

<h2 id="siteDescription"><umbraco:Item runat="server" field="siteDescription"

recursive="true" /></h2>

<umbraco:Macro Alias="umbTopNavigation" runat="server" />

</div>

Page 5: Umbraco - Web developer skinning documentation

5 umbraco.org | About Skins – Beta | Umbraco I/S

</asp:contentplaceholder>

A skin might add a <div> element to apply a particular style to the navigation sections, as below:

<asp:contentplaceholder id="cp_top" runat="server">

<div id="top">

<h1 id="siteName"><a href="/"><umbraco:Item runat="server" field="siteName"

recursive="true" /></a></h1>

<h2 id="siteDescription"><umbraco:Item runat="server" field="siteDescription"

recursive="true" /></h2>

<div id="menu" class="container">

<umbraco:Macro Alias="umbTopNavigation" runat="server" />

</div>

</div>

</asp:contentplaceholder>

Notice in both cases the markup remains unchanged with the exception of the <div> added by the skin to

apply a particular style to the given element, in this case the umbTopNavigation macro rendered output.

In each case the underlying Document Types and Content remain unchanged. In order to apply the skin,

the user only needs to select the desired skin from the Skin dashboard in the site’s Settings section. The

markup, styles, and images associated with the skin are automatically applied by Umbraco.

How Do You Customize a Skin?

A skin can be further customized by editing the site’s Homepage in Canvas mode. Once the site’s

Homepage is opened in Canvas, the customize skin button will open an dialog containing any properties

that can be customized.

The dialog will contain input fields for any custom properties the skin contains.

Page 6: Umbraco - Web developer skinning documentation

6 umbraco.org | About Skins – Beta | Umbraco I/S

Once a user inputs or selects the custom property values and clicks OK, the new values are used in place of

the default values. These custom properties my be anything from text, as above, to images and color

pickers. An example of an image dependency type is shown below:

Changing Skins

By clicking on the change skin link the user can easily select a different skin available for the current

Template, or remove the skin by selecting the I prefer not to install a skin link. By clicking the customize

link the user is returned to the customize skin dialog above.

Page 7: Umbraco - Web developer skinning documentation

7 umbraco.org | About Skins – Beta | Umbraco I/S

Advanced Skins

A skin is located in a unique folder which contains all required files. Umbraco detects if a skin is selected

and applies the selected skin’s CSS, images and script. The skin applied to a site can be easily changed by

selecting the desired skin form the site’s Skin dashboard in the site’s Settings section.

An advanced skin can contain one or more templates which will be used in place of the existing templates.

Although the recommended approach is to use a pure-CSS approach, there may be times when applying a

new Template to the site is advantageous; such as when there are many HTML changes to be made. In this

case, a skin may apply a new .master Template to the site. This Template (or Templates) will replace the

default site Templates, though Umbraco will create a backup of the original site Templates to allow the skin

to be rolled back easily.

Advanced Skin Example

For example, in the default Starterkit.Master Template contains this markup:

<asp:contentplaceholder id="cp_top" runat="server">

<div id="top">

<h1 id="siteName"><a href="/"><umbraco:Item runat="server" field="siteName"

recursive="true" /></a></h1>

<h2 id="siteDescription"><umbraco:Item runat="server" field="siteDescription"

recursive="true" /></h2>

<umbraco:Macro Alias="umbTopNavigation" runat="server" />

</div>

</asp:contentplaceholder>

A skin’s Starterkit.Master Template might contain this markup:

<asp:contentplaceholder id="cp_top" runat="server">

Page 8: Umbraco - Web developer skinning documentation

8 umbraco.org | About Skins – Beta | Umbraco I/S

<div id="wrapper">

<div id="header" class="container">

<div id="logo">

<h1><a href="/"><umbraco:Item runat="server" field="siteName" recursive="true"

/></a></h1>

<p><umbraco:Item runat="server" field="siteDescription" recursive="true" /></p>

</div>

<div id="banner"><img runat="server" src="images/img01.jpg" width="667"

height="118" alt="" /></div>

</div>

<div id="menu" class="container">

<umbraco:Macro Alias="umbTopNavigation" runat="server" />

</div>

</asp:contentplaceholder>

Notice in both cases the id of the Content Placeholder, cp_top, remains unchanged as do the Umbraco

content items,”siteName” and ”siteDescription”, and the Umbraco ”umbTopNavigation” macro. In

addition, the skin applied also contains an image and a different layout structure than the default Starter

Kit skin.

The default Starter Kit Template above renders a page similar to this:

The skin Template above renders a page similar to this:

Page 9: Umbraco - Web developer skinning documentation

9 umbraco.org | About Skins – Beta | Umbraco I/S

In this case, it makes sense to apply a new .master Template to the site as part of the skin as there are

many markup changes.

The Structure of a Skin

Skin CSS and skin script files are stored in the default Umbraco folder locations, /css/ and /scripts/

respectively. When a skin is applied to a site, Umbraco copies the skin’s files to the default locations. A

skin contains all of its files in a folder names for the skin, under the /masterpages/ folder and may include

sub folders for organization.

What Does a Skin Package Contain?

Skins are packed in an archive (.zip) format and contian the following items.

CSS files

JavaScript files

Images

A skin manifest

Optionally, one or more .master Template files

Sub folders can be used to organize content

The Skin Manifest File

The skin manifest contains meta-information about the skin, such as author, skin name and description, as

well as specifying which Document Types and Templates are allowed and the definitions for any custom

skin properties.

Page 10: Umbraco - Web developer skinning documentation

10 umbraco.org | About Skins – Beta | Umbraco I/S

The CSS File

The skin’s CSS files are standard CSS files and should reference any dependent images required. The

recommended naming convention for a skin’s CSS file is:

Skinname_sitename.css

For a skin named “GoBlue” to be applied to the “Starterkit” site the skin’s CSS file would be named:

GoBlue_starterkit.css

Best practice is to keep the number of CSS files for a skin to only one.

The Script Files

If a skin contains a script file, the recommended target location is under the default /scripts/ folder in a

folder named for the skin as follows:

/scripts/GoBlue/script.js

In the skin folder, the script file can be in the root or in a sub folder.

The .master Template Files

As in the above example, a skin may contain Template files which will be used in place of the site’s default

Templates. These Template files may contain any markup, as long as the site’s Content Placeholders and

Umbraco item and macro tags remain intact. The ability to apply any arbitrary markup to a skin Template

gives skins an almost unlimited potential for layout control and variation.

Adding Custom Properties

A skin can contain any number of custom properties that can be set by the skin user. These properties are

set by the user when the skin is applied to a site. The properties can be of various types, including; text,

images, color picker, and others. By allowing a skin to be customized in this way Umbraco skins can be

made unique to each site by the site user.

Supported Website Starter Kits

By default, Umbraco skins are supported for the following types of Website Starter Packs:

Simple Starter Kit

o Including the umbTopNavigation macro

o And the umb2ndLevelNavigation macro

Blog Starter Kit

o Including macros contained by default

Personal Site Starter Kit

o Including the umbTopNavigation macro

o And the umb2ndLevelNavigation macro

Business Website Starter Kit

o Including macros contained by default

Page 11: Umbraco - Web developer skinning documentation

11 umbraco.org | About Skins – Beta | Umbraco I/S

Applying a Skin from the Installation Wizard

The Umbraco installation wizard allows the user to select a starter kit site and to apply a skin to the

selected site at the time Umbraco is installed. Once the site is installed and the skin applied the user can

customize the skin from the Canvas editing area as with skins applied from the Settings section.

By hovering over a starter kit icon the starter kit’s description will be displayed. By clicking a starter kit icon

the starter kit will be installed. The user can select the I prefer not to install a starter kit link to continue the

installation without installing a starter kit.

One a starter kit has been installed, the configure your site screen will display where the user can select an

available skin to apply to the starter kit. As above, by hovering over a skin icon the skin’s description will be

displayed. By clicking a skin icon the skin will be installed. The user can select the I prefer not to install a

skin link to continue the installation without applying a skin to the installed starter kit. In this case, the

starter kit’s default skin will be applied.

Page 12: Umbraco - Web developer skinning documentation

12 umbraco.org | Creating Skins – Beta | Umbraco I/S

Creating Skins

Not only are Umbraco skins easy to apply to a site, they are simple to create as well. Essentially a skin is

comprised of standard CSS, and optionally HTML, with a specific manifest that defines how the skin may be

used and defines any custom properties. There are no special tools required to build a skin, only a text

editor and/or a CSS/ HTML editor. In addition, a clean Umbraco instance with only the website starter pack

being targeted is recommended for testing.

Steps to Create a Skin

The steps needed to create a skin are as follows:

1. Create the skin’s CSS, script, and images

2. Optionally create the skin’s .master Templates

3. Place the skin files in a unique folder under the Umbraco site’s /masterpages/ folder

4. Create the skin manifest (skin.xml) in the root of the skin folder

5. Set skin name, description, and author information in the skin manifest

6. Specify which Document Types are allowed to use the skin

7. Specify which root Template the skin may be applied to

8. Create custom property definitions and tasks

9. In order to redistribute the skin, package the files in a .zip format archive with a unique and

descriptive file name

Required Files

For a skin, only a CSS file to be used in place of the default CSS and the skin manifest are required.

However, best practice is to include the skin’s styles in a separate CSS file, to store the site’s images in a sub

Page 13: Umbraco - Web developer skinning documentation

13 umbraco.org | Creating Skins – Beta | Umbraco I/S

folder, and to store the skin’s script files in a sub folder. A skin may also include additional files, such as a

license, readme, or additional instructions, but these files are ignored by the skin installer.

The Skin Manifest

The skin manifest is an xml file with some required and some optional sections. It must always be in the

root of a skin’s folder structure and must be named “skin.xml.” Following are details of each of a skin

manifest’s sections

Skin Information

Under the <Skin> root are the required elements which should be set for each skin.

<Skin>

<Name></Name>

<Author></Author>

<Version></Version>

<Description><![CDATA[]]></Description>

The <Name> property should be unique per skin as this will be used by Umbraco to display the available

skins to the user.

Setting Document Type permissions

Each skin must specify the alias of the Document Type it is allowed to be used on. This is typically the alias

of the Homepage Document Type for the target site.

<AllowedDocumentTypes></AllowedDocumentTypes>

Setting Template Permissions

Each skin must specify the alias of the root Template it is allowed to be applied to. This is generally the

“Homepage” template for a site.

<AllowedRootTemplate></AllowedRootTemplate>

Specify a Skin Palette

This property is left blank in the manifest and can be set during skin configuration by the user.

<SkinPalette></SkinPalette>

Specifying Custom Properties

Custom properties are defined as dependencies and can contain the property definition and task

definitions. A sample skin manifest snippet is below:

<Dependencies>

<Dependency type="Image" label="Please chose your logo image">

Page 14: Umbraco - Web developer skinning documentation

14 umbraco.org | Creating Skins – Beta | Umbraco I/S

<Properties>

<Output>This is set by the image upload control</Output>

<Height>100px</Height>

<Width>200px</Width>

</Properties>

<Tasks>

<Task type="ModifyCss">

<TargetFile>Style.css</TargetFile>

<TargetRule>#logo</TargetRule>

<TargetParameter>background</TargetParameter>

<Value>no-repeat url( ${OutputPath} )</Value>

</Task>

There are two types of dependencies; Image and Text, and two types of tasks; ModifyCSS and

ModifyTemplate. Using these in combination a custom property can be used to update a logo image in a

Template or update a “background” class in a CSS file, among many other possible uses.

Text Type Dependency

The text type dependency allows a skin user to specify a text value for a property. This value can be used as

a label value, a tool-tip value, a site name value, or any other location where custom text can be used.

<Dependency type="Text" label="">

<Properties>

<Output></Output>

</Properties>

Image Type Dependency

The image type dependency allows a skin user to specify an image as the value for a property. The image

type handles the upload, resize, and crop of images specified by the user. The image type also specifies the

height and width of an image for a given property and will handle resizing an image selected by a use to the

specified dimensions.

<Dependency type="Image" label="">

<Properties>

<Output></Output>

<Height></Height>

<Width></Width>

</Properties>

ModifyCSS Task

The modify CSS task updates the specified target file with the specified value as defined by the properties

of the dependency.

Page 15: Umbraco - Web developer skinning documentation

15 umbraco.org | Creating Skins – Beta | Umbraco I/S

<Task type="ModifyCss">

<TargetFile>Style.css</TargetFile>

<TargetRule>#logo</TargetRule>

<TargetParameter>background</TargetParameter>

<Value>no-repeat url( ${Output} )</Value>

</Task>

ModifyTemplate Task

The modify template task updates the specified target file with the specified value as defined by the

properties of the dependency.

<Task type="ModifyTemplate">

<TargetFile>Textpage.master</TargetFile>

<TargetID>logo</TargetID>

<TargetAttribute>src</TargetAttribute>

<Value>${Output}</Value>

</Task>

AddStyleSheetToTemplate Task

The AddStyleSheetToTemplate task will append a link tag to the head element of the specified file and can,

optionally, add the media attribute.

<Task type="AddStyleSheetToTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<Media>screen</Media>

<Value>${Output}</Value>

</Task>

The AddStyleSheetToTemplate task will append a link tag to the content area that is linked to the

ContentPlaceHolder with the id cp_content.

<Task type="AddStyleSheetToTemplate">

<TargetFile>Homepage.master</TargetFile>

<TargetSelector>//*[@ContentPlaceHolderID = 'cp_content']</TargetSelector>

<Media>screen</Media>

<Value>${Output}</Value>

</Task>

Using the AddStyleSheetToTemplate task, it is also possible to create tasks that will be executed on

installation of a skin. These tasks should be defined in the /Skin/Install element of the skin manifest and

have a fixed value.

Page 16: Umbraco - Web developer skinning documentation

16 umbraco.org | Creating Skins – Beta | Umbraco I/S

<Install>

<Task type="AddStyleSheetToTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<Value>/css/<skin name>/style.css</Value>

</Task>

<Task type="AddStyleSheetToTemplate">

<TargetFile>Homepage.master</TargetFile>

<TargetSelector>//*[@ContentPlaceHolderID = 'cp_content']</TargetSelector>

<Media>screen</Media>

<Value>/css/<skin name>/targetstyle.css</Value>

</Task>

</Install>

Optional Files

In addition to the above files, a skin may also include Template files which will be used in place of the site’s

default Templates. These are the standard .master HTML Template files and should have the same file

name as the site’s default Templates they target for replacement. Best practice when creating .master

Template files is to use the same layout in terms of the Template’s Content and Contentplaceholder

structure as the site’s original Templates.

If a skin contains .master Template files, Umbraco will use these in place of the site’s default .master

Template files when the skin is applied to the site. Umbraco will create a backup of the original Template

files for later use; if the skin in uninstalled or a different skin applied the backup files will be used for the

site’s Templates.

Packaging the Skin

Umbraco skins are packaged as archive format .ZIP files, must contain the skin.xml manifest file, a CSS file,

and may contain images, script, and other files as well as sub folders for organization. Best practice is to

create the sub folders with the same name as the default Umbraco folders. For example, the following sub

folders may be contained in a skin package:

css

scripts

images

These sub folders should be created under an Umbraco site’s /masterpages/<skin name>/ folder.

The recommend approach is to use the Umbraco Package Creator located in the Developer section to select

the skin’s folders and files and to create the .zip file. Using the Umbraco Package Creator a readme text can

be included as well as the license to be applied to the skin package.

Testing the Skin

Testing a skin is simply the process of installing the skin to an Umbraco instance with the target starter kit

installed. Verify the skin can be installed, configured with custom properties (if used), and uninstalled.

Page 17: Umbraco - Web developer skinning documentation

17 umbraco.org | Creating Skins – Beta | Umbraco I/S

Submitting the Skin to the Repository

The process of submitting a skin to the repository for review and distribution is under development.

Enabling a Starter Kit to Support Skins

In order to enable skinning for a website starter kit, which is packaged as an Umbraco package, the

<enableSkins> element need to be added to the package manifest and set to true. With this element set to

true, the Umbraco installer will connect to the Umbraco repository and fetch skins which can be applied to

the current starter kit.

<enableSkins>true</enableSkins>

Page 18: Umbraco - Web developer skinning documentation

18 umbraco.org | Walkthrough: Creating a Skin for Simple Starter Kit – Beta | Umbraco I/S

Walkthrough: Creating a Skin for Simple Starter Kit

Following is a step by step guide to creating a simple skin for the Simple Starter Kit. Using the below steps

one can create a skin for any of the Umbraco starter kits. For the purpose of this walkthrough, assume the

skin name will be BigBlue.

Step 1 – Install the Starter Kit Developer Package

Before getting started, install the Starter Kit Developer package, which will install a feature-complete site,

with all available Umbraco modules installed, as well as a sample HTML page to be used when creating the

new skin.

Step 2 – Create a Stylesheet

Create a new stylesheet, and name it BigBlue_starterkit.css This stylesheet will be located in the folder

/css/BigBlue_starterkit.css

Add a link element to the StarterkitMaster template fot the created stylesheet, just below the included

Starterkit.css reference:

<link ref="stylesheet" type="text/css" src="/css/BigBlue_starterkit.css"></link>

With these items in place the skin specific stylesheet can be edited to change the appearence of the Starter

Kit site,this is the ”skin.” A basic HTML outline of the a Starterkit page is located at the end of this

document.

Including Images

Best practice for including images with your skin, is to create a dedicated folder for them under /css/. All

images will be found under a common path such as /css/SkinName/img01.jpg and the stylesheet can

refernce them directly with a relative path like so:

Background: url(SkinName/img01.jpg);

Step 3 - Modifying the Template HTML

It is possible to add HTML snippets to the default Starterkit template HTML. Best practice is to make any

desired changes using the skin tasks which are discussed in this document.

However, best practices for a Starterkit site skin is to not modify the Starterkit templates but, instead, to

accomplish the desired skin changes exclusively with CSS.

Step 4 - Preparing and Packaging the Skin

When all changes to the skin CSS are complete, the skin is ready for packaging. Preparing a skin for

packaging a skin can be accomplished in three steps

1. Create a new folder under the /masterpages/ folder, so you have path like /masterpages/BigBlue/

2. Copy the sample skin.xml file from the skin documentation to the newly created folder. It is

important that the file be named skin.xml.

3. Edit skin.xml

Page 19: Umbraco - Web developer skinning documentation

19 umbraco.org | Walkthrough: Creating a Skin for Simple Starter Kit – Beta | Umbraco I/S

a. Update the name, author and description properties, leave the allowedTemplate set as:

StarterkitMaster.

b. Navigate to the <install> section. By default a "AddStyleSheet" task is added to the list.

Modify the stylesheet name to the skin’s CSS file name, /css/BigBlue_starterkit.css.

i. This will ensure that Starterkit gets your new stylesheet included in the html

With skin.xml file updated, the skin is complete. In order to allow a skin to be redistributable,it needs to be

contained in a package containing the files and folders for the skin. To create a skin package, follow these

steps:

1. From the Umbraco instance, navigate to the Developer section, expand Packages and right-click on

Created Packages, select Create, input the skin package name, and click Create

2. From the Package Files tab, add the following folder and files

a. /css/BigBlue_starterkit.css

b. /masterpages/BigBlue/

c. /css/BigBlue/images/

3. From the Package Properties tab fill in all the property values

4. Click the Save an Publish button to publish the skin package

When the skin package is published, the skin can be downloaded as a .zip file that can be installed on any

system with a Starter Kit installed.

Step 5 - Testing a Skin

To test a skin packaged as above, simply install the created skin package to an Umbraco instance with

Starterkit installed. Navigate to the content root of the Starterkit site and right-click the Homepage

node,then select Edit in Canvas. In Canvas mode there will be an Edit Skin button on the tool bar, click this

button and a skin editing dialog will be loaded where a skin can be selected and installed by selecting it and

clicking Apply.

To un-install the skin, click the Edit Skin button, de-select the skin, and click Apply. The skin will be

uninstalled and the default Starterkit skin will be applied.

Advanced Skin Tasks

Altering Template Markup

In the previous section we saw how to create a skin using only CSS, and this is the recommended approach

whenenver possible. However, a particular skin design may require that the Template markup be altered

inorder to facilitate the design. In this case it is possible to overridethe default HTML in the

StarterkitTemplate files. This is a more intrusive way of skinning, and has the risk of inadvertantly affecting

other elements that make up a site. As before, altered Tempates are fully uninstallable and the Umbraco

skin engine creates a back-up on when applying a skin so the default Templates are avaibale for a rollback if

needed.

For this example we will continue to work in folder structure created in the previous section. The above

tasks are pre-requisite for this section, so be certain to complete the above example first before continuing.

Page 20: Umbraco - Web developer skinning documentation

20 umbraco.org | Walkthrough: Creating a Skin for Simple Starter Kit – Beta | Umbraco I/S

A skin with HTML changes, overrides the default Starterkit Templates, and creates a backup of the original

Templates.

Steps to Change a Skin’s Templates

To change the HTML associated with a skin, simply edit the defaut Templates to accomodate the desired

the design. It is crucial that you keep all ASP.NET Content and Content Placeholder tags intact, do not

change the id, alias or other attributes of these tags. The can be freely moved within the markup, but the

naming should remain intact intact.

Based on the default Starterkit Templates, it is easy to recognoize the various Content Placeholders and

thier positioning.

When the HTML of the skin’s Template files is complete, and the site renders as expected in the browser,

the altered Template files can be included in the skin package.

To include Template in a skin package, copy the completed Templates to /masterpages/BigBlue/ so they

are located in the same folder as the skin.xml file.

Following the packaging step from abov, the skin’s Template files are now automatically included in the

package when the package is published.

Allowing for User customization of a Skin

A skin can contain a list of dependencies a user can edit when the skin is applied in order to personalize the

skin. These dependecies can be logos, header text, or a selected color, among other things. As detailed

above, these dpendencies and related tasks are definined in the skin.xml file (skin manifest).

The skin.xml for adding dependencies to a skincontains two parts:

Dependency

This defines the type of dependency (image, text, etc...)

<Dependency type="Text" label="Enter your company name">

<Properties>

<Output>My Company</Output>

</Properties>

Dependency Task

These are tasks performed based on the value entered for the dependency by the user and can be tasks like

modifying a stylehsheet, adding HTML to a Template or adding content to a page

<Task type="ModifyTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<TargetID>siteName</TargetID>

<Value>${Output}</Value>

</Task>

Page 21: Umbraco - Web developer skinning documentation

21 umbraco.org | Walkthrough: Creating a Skin for Simple Starter Kit – Beta | Umbraco I/S

Dependency Example

You wish to allow the user to modify the company name. To do this you add a dependency of the type Text

to the skin.xml:

<Dependency type="Text" label="Enter your company name">

<Properties>

<Output>My Company</Output>

</Properties>

Now that you’ve specified a company name, you need a task to process it. In this case we update the

StarterkitMaster Template with the user specified compnay name:

<Task type="ModifyTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<TargetID>siteName</TargetID>

<Value>${Output}</Value>

</Task>

Additonal tasks can be added to a dependency so the user specified value can be used to update multiple

Templates or CSS files. The complete xml added to skin.xml will be:

<Dependency type="Text" label="Enter your company name">

<Properties>

<Output>This is set by the text box control</Output>

</Properties>

<Tasks>

<Task type="ModifyTemplate">

<TargetFile>Textpage.master</TargetFile>

<TargetID>logo</TargetID>

<Value>${Output}</Value>

</Task>

</Tasks>

</Dependency>

Page 22: Umbraco - Web developer skinning documentation

22 umbraco.org | Reference – Beta | Umbraco I/S

Reference

This section contains the reference for all dependency and task types.

Dependency Types

Text

Renders a text input box.

<Dependency type="Text" label="">

<Properties>

<Output></Output>

</Properties>

<Tasks></Tasks>

</Dependency>

Image

Renders a file upload control and allows optionally specified dimensions. If dimensions are specified, an

image cropper will be rendered.

Fixed Size

<Dependency type="Image" label="">

<Properties>

<Output></Output>

<Height></Height>

<Width></Width>

</Properties>

<Tasks></Tasks>

</Dependency>

Size determined by uploaded image.

<Dependency type="Image" label="Header">

<Properties>

<Output></Output>

</Properties>

<Tasks>

</Tasks>

</Dependency>

Color

Renders a color picker.

<Dependency type="Color" label="Company name color">

Page 23: Umbraco - Web developer skinning documentation

23 umbraco.org | Reference – Beta | Umbraco I/S

<Properties>

<Output></Output>

</Properties>

<Tasks></Tasks>

</Dependency>

Option

Renders a drop down list input control.

<Dependency type="Option" label="Sample option">

<Properties>

<Options>blue;red;green</Options>

<Output></Output>

</Properties>

<Tasks></Tasks>

</Dependency>

Slider

Renders a jQuery slider control

<Dependency type="Slider" label="Site name size">

<Properties>

<Minimum>0</Minimum>

<Maximum>100</Maximum>

<Initial>10</Initial>

<Output></Output>

</Properties>

<Tasks></Tasks>

</Dependency>

Task Types

ModifyCSS Task

The modify CSS task updates the specified target file with the specified value as defined by the properties

of the dependency.

<Task type="ModifyCss">

<TargetFile>Style.css</TargetFile>

<TargetRule>#logo</TargetRule>

<TargetParameter>background</TargetParameter>

<Value>no-repeat url( ${Output} )</Value>

</Task>

Page 24: Umbraco - Web developer skinning documentation

24 umbraco.org | Reference – Beta | Umbraco I/S

ModifyCss Examples

Set color of element with id=companyname

<Task type="ModifyCss">

<TargetFile>starterkit.css</TargetFile>

<TargetRule>#companyname</TargetRule>

<TargetParameter>color</TargetParameter>

<Value>${Output}</Value>

</Task>

Set background image of element with id=company

<Task type="ModifyCss">

<TargetFile>starterkit.css</TargetFile>

<TargetRule>#company</TargetRule>

<TargetParameter>background-image</TargetParameter>

<Value>url(${Output})</Value>

</Task>

ModifyTemplate Task

The modify template task updates the specified target file with the specified value as defined by the

properties of the dependency.

<Task type="ModifyTemplate">

<TargetFile>Textpage.master</TargetFile>

<TargetID>logo</TargetID>

<TargetAttribute>src</TargetAttribute>

<Value>${Output}</Value>

</Task>

ModifyTemplate Examples

Set innertext of element with id=companyname

<Task type="ModifyTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<TargetID>companyname</TargetID>

<Value>${Output}</Value>

</Task>

Page 25: Umbraco - Web developer skinning documentation

25 umbraco.org | Reference – Beta | Umbraco I/S

Set src attribute in element with id=companyname

<Task type="ModifyTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<TargetID>companyname</TargetID>

<TargetAttribute >src</TargetAttribute >

<Value>${Output}</Value>

</Task>

AddStyleSheetToTemplate Task

The AddStyleSheetToTemplate task will append a link tag to the head element of the specified file and can,

optionally, add the media attribute.

<Task type="AddStyleSheetToTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<Media>screen</Media>

<Value>${Output}</Value>

</Task>

AddStyleSheetToTemplate Example

The AddStyleSheetToTemplate task will append a link tag to the content area that is linked to the

ContentPlaceHolder with the id cp_content.

<Task type="AddStyleSheetToTemplate">

<TargetFile>Homepage.master</TargetFile>

<TargetSelector>//*[@ContentPlaceHolderID = 'cp_content']</TargetSelector>

<Media>screen</Media>

<Value>${Output}</Value>

</Task>

Install Tasks

Using the AddStyleSheetToTemplate task, it is also possible to create tasks that will be executed on

installation of a skin. These tasks should be defined in the /Skin/Install element of the skin manifest and

have a fixed value.

<Install>

<Task type="AddStyleSheetToTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<Value>/css/<skin name>/style.css</Value>

</Task>

<Task type="AddStyleSheetToTemplate">

<TargetFile>Homepage.master</TargetFile>

<TargetSelector>//*[@ContentPlaceHolderID = 'cp_content']</TargetSelector>

Page 26: Umbraco - Web developer skinning documentation

26 umbraco.org | Reference – Beta | Umbraco I/S

<Media>screen</Media>

<Value>/css/<skin name>/targetstyle.css</Value>

</Task>

</Install>

Complete Dependency with Tasks Example

<Dependencies>

<Dependency type="Text" label="Company name">

<Properties>

<Output></Output>

</Properties>

<Tasks>

<Task type="ModifyTemplate">

<TargetFile>StarterkitMaster.master</TargetFile>

<TargetID>companyname</TargetID>

<Value>${Output}</Value>

</Task>

</Tasks>

</Dependency>

<Dependency type="Color" label="Company name color">

<Properties>

<Output></Output>

</Properties>

<Tasks>

<Task type="ModifyCss">

<TargetFile>Starterkit.css</TargetFile>

<TargetRule>#companyname</TargetRule>

<TargetParameter>color</TargetParameter>

<Value>${Output}</Value>

</Task>

</Tasks>

</Dependency>

<Dependency type="Image" label="Header">

<Properties>

<Output></Output>

<Height>150</Height>

<Width>600</Width>

</Properties>

<Tasks>

<Task type="ModifyCss">

<TargetFile>Starterkit.css</TargetFile>

<TargetRule>#company</TargetRule>

<TargetParameter>background-image</TargetParameter>

Page 27: Umbraco - Web developer skinning documentation

27 umbraco.org | Reference – Beta | Umbraco I/S

<Value>url(${Output})</Value>

</Task>

</Tasks>

</Dependency>

</Dependencies>