Gerbi CMS enable you to create and administrate hierarchical pages in a simple and powerful way.
Gerbi CMS is based around a placeholders concept. A placeholder is special template tag that you use in your page templates. Every time you add a placeholder in your template a field dynamically appears in the page admin.
The project code repository is found at this address: http://github.com/batiste/django-page-cms
This admin interface is no up to date, but could give you an idea of what the software is doing:
- admin : http://pagesdemo.piquadrat.ch/admin/
- frontend : http://pagesdemo.piquadrat.ch/pages/
- :doc:`Automatic creation of localized placeholders </placeholders>` (content area) in admin by adding placeholders tags into page templates.
- Django admin application integration.
- Multilingual support.
- Search indexation with Django haystack.
- Fine grained rights management (publisher, hierarchy manager, language manager).
- :ref:`Rich Text Editors <placeholder-widgets-list>` are directly available.
- Page can be moved in the tree in a visual way.
- The tree can be expanded/collapsed. A cookie remember your preferences.
- Possibility to specify a different page URL for each language.
- The frontend example provide a basic "edit in place" feature.
- Directory-like page hierarchy (page can have the same name if they are not in the same directory).
- Every page can have multiple alias URLs. It's especially useful to migrate websites.
- :doc:`Possibility to integrate 3th party apps </3rd-party-apps>`.
Here is the list of features you can enable/disable:
- Revisions,
- Image placeholder,
- File browser with django-filebrowser,
- Support for future publication start/end date,
- Page redirection to another page,
- Page tagging,
- User input sanitizer (to avoid XSS),
- Sites framework
- Django 1.1.1, Django 1.0 with older release (1.0.5)
- Python 2.3.
- django-haystack if used
- django-authority for per object rights management.
- django-mptt-2
- django-taggit (if PAGE_TAGGING = True)
- html5lib (if PAGE_SANITIZE_USER_INPUT = True)
- django-tinymce (if PAGE_TINYMCE = True)
- Gerbi CMS is shipped with jQuery.
- Gerbi CMS works well with django-staticfiles
- Compatible with MySQL, PostgreSQL, SQLite3, some issues are known with Oracle.
Note
For install instruction go to the :doc:`Installation section </installation>`
I recommend to create a clone on github and make your modifications in your branch. There is a things that is nice to do:
- Add your name to the AUTHORS file.
- Follow the pep08, and the 79 characters rules.
- Add new features in the doc/changelog.rst file.
- Document how the user might use a new feature.
- It's better if a new feature is not activated by default but with a new setting.
- Be careful of performance regresssion.
- Write tests so the test coverage stay over 90%.
- Every new CMS setting should start with PAGE_<something>
- Every new template_tag should start with pages_<something>
To test this CMS checkout the code with git:
$ git clone git://github.com/batiste/django-page-cms.git django-page-cms
Install the dependencies:
$ sudo easy_install pip $ wget -c http://github.com/batiste/django-page-cms/raw/master/requirements/external_apps.txt $ sudo pip install -r external_apps.txt
And then, run the development server:
$ cd example/ $ python manage.py syncdb $ python manage.py build_static $ python manage.py manage.py runserver
Gerbi CMS try to keep the code base stable. The test coverage is higher than 80% and we try to keep it this way. To run the test suite:
python setup.py test
Note
If you are not admin you have to create the appropriate permissions to modify pages. After that you will be able to create pages.
Gerbi include a image placeholder for basic needs. For a more advanced files browser you could use django-filebrowser:
Once the application installed try to register the FileBrowseInput widget to make it available to your placeholders.
This application is available in English, German, French, Spanish, Danish, Russian and Hebrew.