# Open edX Theming Plugin

## Features


This plugin provides a stable place from where to create and launch your openedx theme.


## Compatibility Notes

| Open edX Release |  Version  |
| ---------------- | ---------:|
|     Juniper      |   >= 1.0  |
|       Koa        |   >= 2.0  |
|      Lilac       |   >= 2.0  |

The following changes to the plugin settings are necessary. If the release you are looking for is
not listed, then the accumulation of changes from previous releases is enough.

### Juniper

```
EOX_THEMING_BASE_FINDER_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_finders'
EOX_THEMING_BASE_LOADER_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_loaders'
EOX_THEMING_SITE_THEME_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_models'
EOX_THEMING_CONFIGURATION_HELPER_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_configuration_helpers'
EOX_THEMING_THEMING_HELPER_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_theming_helpers'
EOX_THEMING_STORAGE_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_storage'
STATICFILES_STORAGE = 'eox_theming.theming.storage.EoxProductionStorage'
EOX_THEMING_EDXMAKO_BACKEND = 'eox_theming.edxapp_wrapper.backends.j_mako'
```

### Koa (optional)**

```
EOX_THEMING_STORAGE_BACKEND = 'eox_theming.edxapp_wrapper.backends.l_storage'
EOX_THEMING_EDXMAKO_BACKEND = 'eox_theming.edxapp_wrapper.backends.l_mako'
```

### Lilac

```
EOX_THEMING_STORAGE_BACKEND = 'eox_theming.edxapp_wrapper.backends.l_storage'
.EOX_THEMING_EDXMAKO_BACKEND = 'eox_theming.edxapp_wrapper.backends.l_mako'
```

Those settings can be changed in `eox_theming/settings/common.py` or, for example, in ansible configurations.

**NOTE**: the current ``common.py`` works with Open edX lilac version.


## Installation

### Open edX devstack

- Clone this repo in the src folder of your devstack.
- Open a new Lms/Devstack shell.
- Install the plugin as follows: pip install -e /path/to/your/src/folder
- Restart lms/cms services.

## Usage

Include a usage description for your plugin.

### Settings

To start using eox-theming, we must make the settings shown in the microsite settings (if we don't have one created, create it and configure it), add some available settings to the tenant:

```json
{"THEME_OPTIONS":{"theme":{"grandparent":"test-3","name":"test-1","parent":"test-2"}}}
```

For this, you must also make sure you have eox-tenant installed in your environment,
and to configure it we must locate the [common.py](https://github.com/eduNEXT/eox-tenant/blob/master/eox_tenant/settings/common.py#L52) 
file and set the `USE_EOX_TENANT` variable to `True`

Include the follow configuration in devstack.py:

```python
"""
Production Django settings for eox_theming project.
"""

from __future__ import unicode_literals


def plugin_settings(settings):
    """
    Set of plugin settings used by the Open Edx platform.
    More info: https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/plugins/README.rst
    """
    settings.STATICFILES_FINDERS = [
        'eox_theming.theming.finders.EoxThemeFilesFinder',
    ] + settings.STATICFILES_FINDERS

    settings.STATICFILES_STORAGE = 'eox_theming.theming.storage.EoxDevelopmentStorage'

    from lms.envs.common import _make_mako_template_dirs # pylint: disable=import-error
    settings.ENABLE_COMPREHENSIVE_THEMING = True
    settings.COMPREHENSIVE_THEME_DIRS = [
        '/edx/src/themes/ednx-test-themes/edx-platform/',
    ]
    settings.TEMPLATES[1]["DIRS"] = _make_mako_template_dirs
    settings.derive_settings("lms.envs.devstack")
```

Note that in `COMPREHENSIVE_THEME_DIRS` it must contain a list of directories where the folders of the themes to be tested are located.

## Contributing

Contributions are welcome! See our [CONTRIBUTING](https://github.com/eduNEXT/eox-theming/blob/master/CONTRIBUTING.rst) 
file for more information – it also contains guidelines for how to maintain high code
quality, which will make your contribution more likely to be accepted.
