============ Introduction ============ Django Basic CMS enable you to create and administrate hierarchical pages in a simple and powerful way. Django Basic 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/YD-Technology/django-basic-cms .. contents:: :local: :depth: 1 Screenshot ============ .. image:: admin-screenshot1.png Demo ==== 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/ Key features ============ * :doc:`Automatic creation of localized 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 ` 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 `. Other features ============== 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 `_ Dependencies & Compatibility ============================ * Django 1.4, 1.5, 1.6 * Python 2.6, 2.7, 3.3 * `django-haystack if used `_ * `django-authority for per object rights management `_. * `django-mptt-2 `_ * `django-taggit `_ * `html5lib `_ (if PAGE_SANITIZE_USER_INPUT = True) * `django-tinymce `_ (if PAGE_TINYMCE = True) * Django Basic CMS is shipped with jQuery. * Compatible with MySQL, PostgreSQL, SQLite3, some issues are known with Oracle. .. note:: For install instruction go to the :doc:`Installation section ` How to contribute ================== I recommend to `create a clone on github `_ and make your modifications in your branch. There is a things that is nice to do: * 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_ * Every new template_tag should start with pages_ Ask for help ============ `Django Basic CMS Github `_ Test it ------- To test this CMS checkout the code with git:: $ git clone git://github.com/YD-Technology/django-basic-cms.git django-basic-cms Install the dependencies:: $ sudo easy_install pip $ wget -c http://github.com/YD-Technology/django-basic-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 YD-Technology 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. Handling images and files --------------------------- YD-Technology include a image placeholder for basic needs. For a more advanced files browser you could use django-filebrowser: * http://code.google.com/p/django-filebrowser/ Once the application installed try to register the `FileBrowseInput` widget to make it available to your placeholders. Translations ------------ This application is available in English, German, French, Spanish, Danish, Russian and Hebrew.