Customization options

You generally have these customization options:

  1. Use backend settings and frontend settings to customize your Fleio installation
  2. Write some hooks
  3. Write a Django app
  4. Change Fleio original source code

Write some hooks

Python Backend hooks/signals

The Python backend hooks are called signals. See how to add your custom code to run on certain events, without modifying Fleio source code: Python signals.

Frontend hooks

Fleio allows you to add your custom JavaScript, CSS, etc. code without modifying Fleio original code. This has the advantage that you don not need to merge code on every Fleio packages upgrade.

You can insert your HTML code (that can load JavaScript, CSS etc.) in the Fleio end-user panel index.html or staff panel index.html file. You can insert JavaScript code that changes the DOM dynamically. Use Frontend customization option in the staff panel to insert your custom code.

Write a Django app

Learn how to develop web applications with Django: https://www.djangoproject.com/start/

To include your app in the Fleio Django project add it to INSTALLED_APPS in the settings.py file:

INSTALLED_APPS += (
    'myapp',
)

You will also want to include your urls module in the project’s URLs map. Edit /var/webapps/fleio/project/fleio/url.py and add your module to urlpatterns:

urlpatterns = [
    # API URLs
    # ...
    path('{}myurl/'.format(settings.URL_PREFIX), include(('myapp.urls', 'myapp'), namespace='myapp')),
]

The settings.py file is never overwritten by Fleio.

Note that the urls.py file will be overwritten on Fleio upgrades and you will need to merge your changes again. We will create a mechanism to include your URL mapping without changing Fleio vanilla source code. Contact us and ask for it.

Most of the Fleio source code has the backend Python files separate from the frontend files (JavaScript, HTML, CSS, etc.). But some Fleio modules are written as plugins that include Python code and frontend code. If you want to write a Fleio plugin module, you can find inspiration in the following plugin modules:

/var/webapps/fleio/project/plugins/
    cpanel/
    cpanelserver/
    domains/
    tickets/
    todo/

Change Fleio original source code

This allows the maximum flexibility, but require that you reapply your changes after Fleio upgrade. You can edit:

  • Python backend here: /var/webapps/fleio/project/
  • and HTML, CSS, JavaScript frontend here:
    • /var/webapps/fleio/frontend/site/ - end-user panel
    • /var/webapps/fleio/frontend/site/staff - staff panel

Note that any file that was installed by the fleio-backend or fleio-frontend packages will be overwritten on future upgrades and will be deleted on package uninstall.

So after every upgrade will have to merge your changes again.

We recommend adding comments in the places where you change Fleio vanilla (original) code with some unique string, like YourCompanyName. And before a Fleio packages upgrade, you make a copy of the /var/webapps/fleio/ directory in, upgrade then edit files again with your changes. Use a find in files tool to find comments with YourCompanyName.

You may find it convenient to keep Fleio files in a git repository on one branch and your changes on another branch. It’s useful to have a history of file changes and compare changes easily.