src/source/howto-skin.rst
branchdoc-dc
changeset 75 5cf9c8a16aee
parent 67 81281f49aeb4
child 81 40923f406943
--- 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