diff -r efe71f19939c -r 5cf9c8a16aee src/source/howto-skin.rst --- a/src/source/howto-skin.rst Fri Jun 01 18:27:09 2018 +0200 +++ b/src/source/howto-skin.rst Mon Jun 04 11:56:08 2018 +0200 @@ -3,3 +3,67 @@ How to create a new skin? ========================= + +A Skin is a tagging interface for associating media, javascript and CSS resources to a **renderer** + +1) Configuring resource library +------------------------------- + + +.. code-block:: python + + from fanstatic import Library, Resource + from pyams_default_theme import pyams_default_theme + + #Library(name, folder_path) + library = Library('mycms', 'resources') + + #Resource(library, path_to_static) + mycms_css = Resource(library, 'css/mystyle.css',) + + + mycms_js = Resource(library, 'js/pyams-default.js', + depends=(pyams_default_theme, ) + bottom=True + ) + + +Resource can include other resource already defined in pyams_default_theme + + +2) Create a new Layer to your skin +---------------------------------- + +Build a new interface inherit from `ICustomLayer` +.. code-block:: python + + class ICustomLayer(ICustomLayer): + """skin layer""" + +Define an utility providing ISkin with the custom label and the layer interface + +.. code-block:: python + @utility_config(name='Custom skin', provides=ISkin) + class CustomSkin(object): + """custom root skin""" + + label = _("Custom: skin") + layer = ICustomLayer + + +3) Declare the layer adapter +---------------------------- + +.. code-block:: python + + @adapter_config(context=(Interface, ICustomLayer, Interface), provides=IResources) + class CustomSkinResourcesAdapter(ContextRequestViewAdapter): + """Custom skin resources adapter""" + + def get_resources(self): + mycms.need() + +.. note:: + In the ZMI website you can now change the default graphical theme by you custom skin + + .. image:: _static/select_skin.png