OpenWGA 7.0 - OpenWGA Concepts and Features

Design and development » Customizable application designs » Creating customizable application designs

What a customizable design actually is

A customizable design is a normal design directory which:

  • Has a publisher option "OverlaySupport" identifying it as a customizable design. You can set that on the "Advanced" tab of your design configuration. The contents of this option may be "optional", if your design also can be used uncustomized, or "mandatory" if your design necessarily needs to be customized to be used in any meaningful way.
  • Uses a special folder named "overlay" to identify design resources which should be customizable. These design resources then need to adhere to some special rules when addressing other design resources

The by far larger of both points is point number two. Below any root folder for design resources in a design directory there may be a folder named "overlay":

  • /files/overlay/...
  • /scripts/<scripttype>/overlay/...
  • /tml/<mediakey>/overlay/...

OpenWGA regards the resources inside those folders as customizable resources. These are the resources that get copied to the overlay folder when using a customizable design with overlay folder. But as you know they do not get copied with their "overlay" parent directory but only the part below it. Therefor the designer who customizes your design does not know about the extra "overlay" folder. He can just use his overlay design directory like a regular design directory.

That is why addressing design resources in an overlay resource must be a bit different than normally. The contents of all "overlay" directories in your design directory actually forms a separate design directory, which just happens to be built into your design, and will always behave like that.

This will  even be the case if your user chooses not to customize your customizable design. When your "OveraySupport" is "optional" and the user chooses "none" for a customization directory, then your overlay resources will just get loaded from the base design. They nevertheless will behave like they belong to an external overlay design. More on that in the next chapter.