Skip to content

Update of skin and style description#10954

Open
BettyFromHH wants to merge 2 commits intoILIAS-eLearning:release_11from
BettyFromHH:delos-build-docu
Open

Update of skin and style description#10954
BettyFromHH wants to merge 2 commits intoILIAS-eLearning:release_11from
BettyFromHH:delos-build-docu

Conversation

@BettyFromHH
Copy link
Contributor

This pull request includes updating the readme.md file from the ./templates directory.

At the same time, we've decided to include the information on creating and editing custom skins and styles in the delos repository. This update now provides more comprehensive information on creating and editing skins and styles, as well as examples. To make it easier for new users to find the documentation for custom skins and styles, the readme.md file and the coding style guides are copied to the delos repository, serving as a central entry point for this topic.

For this reason, the build script had to be adjusted to also copy the necessary .md files.

@BettyFromHH BettyFromHH added improvement documentation Pull requests that only update or add documentation. css/html Pull requests that propose changes to CSS/SCSS or HTML files. labels Jan 21, 2026
Copy link
Contributor

@rfalkenstein rfalkenstein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @BettyFromHH ,

I like this a lot since it improves my understanding of the skin/style processes in ILIAS. I added some small remarks.
The next step then might be to adapt the github workflow in ".github/workflows/style-to-repo_trunk.yml" in order to automatically push the delos style for release_11 to its corresponding repo.

Thank you very much!

Best regards,
@rfalkenstein

necessary to build the default System Style of ILIAS called Delos. Due to the
new build process of ILIAS, the fonts, images and icons are no longer part of
this folder. They are now initially located in the components/ILIAS/UI/resources
folder and copied to the public/assets folder during the build process.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have any hint on when/how this "build process" takes place?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In order to inform uses we create a wiki about skins & styles right now.
After this, we update this readme.md and complete all information about the build process.

new build process of ILIAS, the fonts, images and icons are no longer part of
this folder. They are now initially located in the components/ILIAS/UI/resources
folder and copied to the public/assets folder during the build process.
Even so all template files are still located in the templates folder of each
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean by "even so"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's wrong, I fixed it.

## Custom Skins and Styles

System Styles may be customized by creating custom skin and style. Custom skins
must be placed in the directory `./public/Customizing/skin`. A custom skin have
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"has"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed


### Step 1: Create skin directory

If you want to create a new skin on the scratch, you have to go to the skin directory
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"from scratch"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

<template xmlns = "http://www.w3.org" version = "1" name = "MySkin">
<style name = "MyStyle" id = "mystyle" image_directory = "images"/>
<template xmlns = "http://www.w3.org" version = "1.0" name = "MySkin">
<style name="MyStyle" id="mystyle" image_directory="images"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, folders are always case sensitive.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we not change the template.xml example then? Or the path in the directory example? -> https://github.com/BettyFromHH/ILIAS/blob/f3f3560d2aae8b6b86a0b501971ccf0be7014597/templates/Readme.md?plain=1#L145

and execute:

```
./node_modules/.bin/sass delos.scss mystyle.css
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a hint would be nice that ./node_modules/.bin/sass only comes with the dev packages from package.json

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A note can be found under "History > ILIAS 10".

> The directory can also include the '../' designation and is always used relative
> to the directory specified with the id.

## Usefull hints
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo ;-) -> "Useful"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤦‍♀️

- **Important**:
> The location of the skin was moved to `./public/Customizing/skin`
- System style Management through GUI has been abandoned, see: https://docu.ilias.de/go/wiki/wpage_1_1357
- Sass is no shipped with NPM, see: https://github.com/ILIAS-eLearning/ILIAS/pull/8115
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clearer and fix the typo:
Sass is now shipped with NPM in the ILIAS dev-dependencies.

@matthiaskunkel
Copy link
Member

Hi @Chris-Squirrel, please have a look at the readme file. Thanks!

@BettyFromHH
Copy link
Contributor Author

Hey @rfalkenstein, thanks for your review.

I will place the hints and correct the typos.

enable to manipulate the classes defining the appearance of user generated
content.
The total representation of ILIAS' graphical user interface is defined by
its Skin and Style. The Skin contains all the necessary files (CSS/SCSS, images,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ILIAS's graphical user interface is determined by its skin and style (?)

Notes: ILIAS's - apostrophe without an 's' is only for plurals. 'skin' and 'style' don't need to be written with a capital letter do they?

content.
The total representation of ILIAS' graphical user interface is defined by
its Skin and Style. The Skin contains all the necessary files (CSS/SCSS, images,
icons, fonts, templates) to define the visual appearance of ILIAS. A Skin contains
Copy link
Contributor

@Chris-Squirrel Chris-Squirrel Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I prefer 'determine' to 'define'. This is used multiple times in this text - I appreciate that this might be 'developer' speak - but I feel feel I have to flag it nevertheless.

## ILIAS System Style DELOS

The template folder of ILIAS contains the CSS/SCSS files and templates, which are
necessary to build the default System Style of ILIAS called Delos. Due to the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'system style' (?) Does this need to be written with capital starting letters?

new build process of ILIAS, the fonts, images and icons are no longer part of
this folder. They are now initially located in the components/ILIAS/UI/resources
folder and copied to the public/assets folder during the build process.
Even so all template files are still located in the templates folder of each
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even so, all templates.... - if you want to keep 'even so', it requires a comma.

folder and copied to the public/assets folder during the build process.
Even so all template files are still located in the templates folder of each
component. All files together define the visual appearance of ILIAS.
They differ from Content Styles, which enable to manipulate the classes defining
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'content styles'? Does this have to be written with capital starting letters?

Even so all template files are still located in the templates folder of each
component. All files together define the visual appearance of ILIAS.
They differ from Content Styles, which enable to manipulate the classes defining
the appearance of user generated content.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... which allow the classes determining the appearance of user-generated content to be manipulated (adjusted, modified, tweaked?)

Notes: 'which enable to be manipulated' is grammatically incorrect. 'user-generated' functions as a single adjective - requires the hyphen.


System Styles may be customized by creating custom skin and style. Custom skins
must be placed in the directory `./public/Customizing/skin`. A custom skin have
to contain one style and may include further sub-styles. The sub-styles may be
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'at least one style' - or 'may only contain a single style'?


### Step 3: Switch to correct branch

To Switch to the correct branch you have to change into the Skin-Directory and switch
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably better without the capital 's' - i.e. 'switch'... unless Nintendo is sponsoring us :-D Same goes for 'skin directory'


### Step 4: Finish

Now the Skin is ready to be used and you can activate it in the ILIAS administration.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'skin' - in the title of step one it is written with a small 's'.

Every skin can contain multiple styles. This example defines one style called
MyStyle.
In this example a custom skin called MySkin is defined, which contains one style
called MyStyle. The style has the ID mystyle and uses the subdirectory images to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...and uses the subdirectory 'images' - or "images" - something need to be added to make it clear that 'images' is the title of the folder

Every skin can contain multiple styles. This example defines one style called
MyStyle.
In this example a custom skin called MySkin is defined, which contains one style
called MyStyle. The style has the ID mystyle and uses the subdirectory images to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...and uses the subdirectory 'images' - or "images" - something needs to be added to make it clear that 'images' is the title of the folder

new skin.
new skin.

Since ILIAS 5.3 we move aim to move most of the UI towards the UI Components. They
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...we move aim to move....?

"Since ILIAS 5.3 we have been aiming to move..."?

Since ILIAS 5.3 we move aim to move most of the UI towards the UI Components. They
are located in src/UI. To overwrite those you need to add the respective tpl files
in your skins folder.
are located in src/UI. To overwrite those you need to add the respective tpl files
Copy link
Contributor

@Chris-Squirrel Chris-Squirrel Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • How about 'which are located in' instead of 'They are located in'?
  • To overwrite 'these'

are located in src/UI. To overwrite those you need to add the respective tpl files
in your skins folder.
are located in src/UI. To overwrite those you need to add the respective tpl files
in your skins folder.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'to' your skins folder. (?)

subdirectory structure (omit the `templates` subdirectory). E.g. to replace the
template file `components/ILIAS/XYZ/templates/tpl.xyz.html` create a new
version at `./public/Customizing/skin/myskin/components/ILIAS/XYZ/tpl.xyz.html`. A template of a UI Component located in
`src/UI/templates/default/XYZ/tpl.xyz.html` can be customized by creating a
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'customised'

- Standard Layout: components/ILIAS/UI/templates/default/Layout/tpl.standardpage.html, the frame of the DOM for the complete ILIAS page.
Also checkout the according scss variable under section Layout (UI Layout Page).
- Standard Layout: components/ILIAS/UI/templates/default/Layout/tpl.standardpage.html, the frame of the DOM for the complete ILIAS page.
Also checkout the according scss variable under section Layout (UI Layout Page).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'check out'
  • I have no idea how to read the rest of this. I feel that something needs to be clarified. Is it the 'according' scss variable, or the 'according scss' variable?
  • under section Layout? This could also be clearer - 'in the section "Layout"'?

Also checkout the according scss variable under section Layout (UI Layout Page).
- Standard Layout: components/ILIAS/UI/templates/default/Layout/tpl.standardpage.html, the frame of the DOM for the complete ILIAS page.
Also checkout the according scss variable under section Layout (UI Layout Page).
- Meta Bar: components/ILIAS/UI/templates/default/MainControls/tpl.metabar.html, the Bar on the top holding Notification, Search User Avatar, etc.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'at the top'?
  • holding? Might be better as 'containing'?

Also checkout the according scss variable under section Layout (UI Layout Page).
- Meta Bar: components/ILIAS/UI/templates/default/MainControls/tpl.metabar.html, the Bar on the top holding Notification, Search User Avatar, etc.
Also checkout the according metabar scss variables.
Also checkout the according metabar scss variables.
Copy link
Contributor

@Chris-Squirrel Chris-Squirrel Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'check out'. Explanation. 'checkout' is a noun. 'check out' is the verb.
  • What does 'according' mean? 'corresponding'? 'respective'? 'appropriate'? Or is it the name of something? In which case some apostrophes around the names might help in all of these similar sentences.

- Meta Bar: components/ILIAS/UI/templates/default/MainControls/tpl.metabar.html, the Bar on the top holding Notification, Search User Avatar, etc.
Also checkout the according metabar scss variables.
Also checkout the according metabar scss variables.
- Main Bar: components/ILIAS/UI/templates/default/MainControls/tpl.mainbar.html, the Bar on the left holding triggers for opening the slates for
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'bar' - doesn't need to be written with a capital 'b'.
  • holding? - maybe 'containing' would be better?
  • for opening - I think 'to open' sounds better?

- Main Bar: components/ILIAS/UI/templates/default/MainControls/tpl.mainbar.html, the Bar on the left holding triggers for opening the slates for
accessing Repository, Dasbhoard etc. Content.
Also checkout the according mainbar scss variables.
accessing Repository, Dasbhoard etc. Content.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'Dashboard' - not dasbhoard!
  • a comma is required before 'etc' - i.e. ... 'Repository, Dashboard, etc.'
  • 'content'.

accessing Repository, Dasbhoard etc. Content.
Also checkout the according mainbar scss variables.
accessing Repository, Dasbhoard etc. Content.
Also checkout the according mainbar scss variables.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'check out' (please forgive me if checkout is 'developerish' and is widely used in coding. In normal English, it is a noun when written together).

Also checkout the according mainbar scss variables.
accessing Repository, Dasbhoard etc. Content.
Also checkout the according mainbar scss variables.
- Slate: components/ILIAS/UI/templates/default/MainControls/Slate/tpl.slate.html, the Slates triggered by opening items of the Main Bar.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'slates' ?

Also checkout the according mainbar scss variables.
- Slate: components/ILIAS/UI/templates/default/MainControls/Slate/tpl.slate.html, the Slates triggered by opening items of the Main Bar.
Also checkout the according slate scss variables.
Also checkout the according slate scss variables.
Copy link
Contributor

@Chris-Squirrel Chris-Squirrel Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-'check out'-

  • Again - no idea what is meant by according. Is it maybe a noun? In which case, check out the 'according slate' (?) scss variables.

- Slate: components/ILIAS/UI/templates/default/MainControls/Slate/tpl.slate.html, the Slates triggered by opening items of the Main Bar.
Also checkout the according slate scss variables.
Also checkout the according slate scss variables.
- Breadcrumbs: components/ILIAS/UI/templates/default/Breadcrumbs/tpl.breadcrumbs.html, Breadcrumbs working as locator on the top of the page.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Breadcrumbs working as locator on the top of the page. - I don't get this. How about 'Breadcrumbs work as locators at the top of pages'?

Also checkout the according slate scss variables.
- Breadcrumbs: components/ILIAS/UI/templates/default/Breadcrumbs/tpl.breadcrumbs.html, Breadcrumbs working as locator on the top of the page.
Also checkout the breadcrumb scss variables.
Also checkout the breadcrumb scss variables.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'check out'?


### &lt;style>-Tag

The style tag defines the main style. This must include at least the parameters name, id, and
Copy link
Contributor

@Chris-Squirrel Chris-Squirrel Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • The id is one of the three divisions of the psyche in psychoanalytic theory - unless there is a clear programming reason, we should use 'ID' (i.e. identification).
    -This might be nicer as ...the parameters 'name', 'ID' and 'image directory'. ? Generally speaking, if you agree, all referenced names in this text should be treated this way.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case 'id' is a tag parameter and must be written in lowercase.


### ILIAS 10
- **Important**:
> The location of the skin was moved to `./public/Customizing/skin`
Copy link
Contributor

@Chris-Squirrel Chris-Squirrel Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'has been moved to'? ILIAS 10 is still the current version!

### ILIAS 10
- **Important**:
> The location of the skin was moved to `./public/Customizing/skin`
- System style Management through GUI has been abandoned, see: https://docu.ilias.de/go/wiki/wpage_1_1357
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'management'

#### ILIAS 9
A proposal for better structuring the System Styles has been provided and accepted by the JF in 2021,
### ILIAS 9
A proposal for better structuring the System Styles has been provided and accepted by the JF in 2021,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'A proposal on how to better structure the system styles was made and accepted by the JF in 2021'

see: https://github.com/ILIAS-eLearning/ILIAS/blob/trunk/src/UI/docu/sass-guidelines.md

With ILIAS 9 the SCSS as been restructered according to the ITCSS structure suggested by this proposal,
With ILIAS 9 the SCSS as been restructered according to the ITCSS structure suggested by this proposal,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'In ILIAS 9 the SCSS was restructured according to....' ??

and the depencency to less from Bootstrap has mostly been removed. However, the change from less to SCSS
and the abandonment from Bootstrap means, that System Styles from 8 and lower are NOT compatible with ILIAS 9.
They can not be imported, be used, or compiled.
They can not be imported, be used, or compiled.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'They cannot be imported, used or compiled'

Cannot = not possible
Can not = it is possible to not do something


With ILIAS 9 the SCSS as been restructered according to the ITCSS structure suggested by this proposal,
With ILIAS 9 the SCSS as been restructered according to the ITCSS structure suggested by this proposal,
and the depencency to less from Bootstrap has mostly been removed. However, the change from less to SCSS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is 'less' a thing? I really don't get this sentence...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LESS = Leaner Style Sheets

Now we use SASS (Syntactically Awesome StyleSheets)

With ILIAS 9 the SCSS as been restructered according to the ITCSS structure suggested by this proposal,
With ILIAS 9 the SCSS as been restructered according to the ITCSS structure suggested by this proposal,
and the depencency to less from Bootstrap has mostly been removed. However, the change from less to SCSS
and the abandonment from Bootstrap means, that System Styles from 8 and lower are NOT compatible with ILIAS 9.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 'to abandon from' is not a verb... What is meant here?
  • '..... means that' - comma not needed in English.

They can not be imported, be used, or compiled.
They can not be imported, be used, or compiled.

However, note, that most of the css should still work. Also less and scss are not that far appart. Best read
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'However, note that most of...' - second comma not needed.

@BettyFromHH
Copy link
Contributor Author

@rfalkenstein
@Chris-Squirrel

Thanks a lot for your hints and advice.
I tried to implement everything as best I could. However, this wasn't possible in some cases.

@matthiaskunkel
I'll merge this on friday.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

css/html Pull requests that propose changes to CSS/SCSS or HTML files. documentation Pull requests that only update or add documentation. improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants