============ Introduction ============ This Django CMS enable you to create and administrate hierarchical pages in a simple and powerful way. Django page 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 repository code repository is found at this address: http://github.com/batiste/django-page-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 </placeholders>` (content area) in admin by adding placeholders tags into page templates. * Django admin application integration. * Multilingual support. * `Search indexation with Django haystack <http://haystacksearch.org/>`_. * 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>`. 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 <http://docs.djangoproject.com/en/dev/ref/contrib/sites/#ref-contrib-sites>`_ Dependencies & Compatibility ============================ * Django 1.1.1, Django 1.0 with older release (1.0.5) * Python 2.3. * `django-haystack if used <http://haystacksearch.org/>`_ * `django-authority for per object rights management <http://bitbucket.org/jezdez/django-authority/src/>`_. * `django-mptt-2 <http://github.com/batiste/django-mptt/>`_ * `django-tagging <http://code.google.com/p/django-tagging/>`_ (if PAGE_TAGGING = True) * `html5lib <http://code.google.com/p/html5lib/>`_ (if PAGE_SANITIZE_USER_INPUT = True) * `django-tinymce <http://code.google.com/p/django-tinymce/>`_ (if PAGE_TINYMCE = True) * Django page CMS is shipped with jQuery. * Django page CMS works well with `django-staticfiles <http://pypi.python.org/pypi/django-staticfiles/>`_ * Compatible with MySQL, PostgreSQL, SQLite3, some issues are known with Oracle. .. note:: For install instruction go to the :doc:`Installation section </installation>` How to contribute ================== I recommend to `create a clone on github <http://github.com/batiste/django-page-cms>`_ 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> Ask for help ============ `Django page CMS Google Group <http://groups.google.com/group/django-page-cms>`_ Test it ------- 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 Django Page 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 --------------------------- Django page CMS 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.