Package: django-fancypages
=======================================Fancy CMS-style page editing for Django=======================================.. image:: https://travis-ci.org/tangentlabs/django-fancypages.png?branch=master:target: https://travis-ci.org/tangentlabs/django-fancypages?branch=master.. image:: https://coveralls.io/repos/tangentlabs/django-fancypages/badge.png?branch=master:target: https://coveralls.io/r/tangentlabs/django-fancypages?branch=master.. image:: https://requires.io/github/tangentlabs/django-fancypages/requirements.png?branch=master:target: https://requires.io/github/tangentlabs/django-fancypages/requirements/?branch=master:alt: Requirements Status**Note:** This is a work in progress and part of this project will likelychange and could potentially break things. Be careful with using it.Fancypages provides an easy way to edit content in your Django project.Another content management system, you ask? No it is not! Rather, it is a*content enhancement system* (CEnS) because it provides a user with thecontrolled ability to edit content on a page.The way this Django app works is inspired by `django-frontend-admin`_,`django-content-blocks`_ and other similar apps. Especially, the use oftemplate tags to define customisable sections in a Django template isbased on the ideas in the two apps mentioned above.**Warning:** There's currently an issue with *django-model-utils* 2.0+ andDjango 1.5.5. Until this is resolved, we advise to use **version 1.5** withthat specific version of Django... _`django-frontend-admin`: https://github.com/bartTC/django-frontendadmin.. _`django-content-blocks`: https://github.com/KevinBrolly/django-content-blocksOscar and Fancypages--------------------Fancypages has originally been developed to extend the functionality of`django-oscar`_ by giving a the client limited control over content editing andcomplement the Oscar dashboard. The need of other (non-Oscar) projects for asimiliar content editing funtionality lead to the separation of`django-oscar-fancypages`_ into a separate app.After several months of experience with maintaining both apps separately, we'vemade the decision to maintain the Oscar integration as part of fancypagesavailable in ``fancypages.contrib.oscar_fancypages``. This should make iteasier to maintain both code bases and provide better integration for both.**Note:** `django-oscar-fancypages`_ is now deprectated and will no longerreceive feature updates.Screenshots-----------.. image:: https://raw.github.com/tangentlabs/django-fancypages/master/docs/source/images/screenshots/homepage_editor_hidden.png.. image:: https://raw.github.com/tangentlabs/django-fancypages/master/docs/source/images/screenshots/homepage_editor_opened.png.. image:: https://raw.github.com/tangentlabs/django-fancypages/master/docs/source/images/screenshots/homepage_edit_block_form.png.. image:: https://raw.github.com/tangentlabs/django-fancypages/master/docs/source/images/screenshots/homepage_block_menu.pngDocumentation-------------Installation instructions and documentation are hosted on the incredible`readthedocs.org`_:https://django-fancypages.readthedocs.org.. _`readthedocs.org`: http://readthedocs.orgProjects Using Fancypages-------------------------* The Chocolate Box: https://www.chocolatebox.com.au* Which Right Choice: https://www.whichrightchoice.com* Freetix: https://www.freetix.com.au* Agatha Christie: http://www.agathachristie.comLicense-------``django-fancypages`` is released under the permissive `New BSD license`_... _`New BSD license`: https://github.com/tangentlabs/django-fancypages/blob/master/LICENSE.. image:: https://d2weczhvl823v0.cloudfront.net/tangentlabs/django-fancypages/trend.png=========Changelog=========0.3.1-----* Remove the ``target="_blank"`` attribute that used to be added by``wysihtml5`` when sanitising link tags.* Rename the ``advance.js`` config file for ``wysihtml5`` to``wysihtml5-config.js``.* Minify ``wysihtml5-config.js`` used for customising ``wyshtmls5`` toreduce size.* Fixes #25 (1): getting the child pages of a ``FancyPage`` used the``PageNode``'s method ``get_children`` which would return a querysetof ``PageNode`` instances. ``FancyPage`` now provides its own``get_children`` method that returns the corresponding queryset of``FancyPage`` instances.* Fixes #25 (2): using the API to move pages in the hierarchy failed withan internal server error caused by changes during refactoring. The callsto the API are now using the UUID as expected instead of the model's PK.0.3.0-----* Provide the actual object for a block in the ``rendered_block`` tuples toallow more flexibility in the templates, especially in ``container.html``.* Move the block selection modal markup from within the container into thebody of the page. This means we only need a single modal including allavailable blocks. Also it avoids problems with displaying the modal.* Switch the models for ``FancyPage`` and ``TreeNode`` to use Django'sswappable API and loosen the relationship between the two. previously, the``FancyPage`` model was a subclass of both the ``AbstractFancyPage`` and the``AbstractTreeNode`` which caused issues in *django-oscar-fancypages* whenintegrating with the ``Category`` models. The use of the swappable APIsimplifies the handling of this relationship and makes customising the treenode used for the ``FancyPage`` easier.This adds two settings ``FP_NODE_MODEL`` for the tree node model class thatwill default to  ``fancypages.PageNode`` and the ``FP_PAGE_MODEL`` whichdefaults to  ``fancypages.PageNode``.* Interacting with blocks and containers has completely moved to the RESTfulAPI for blocks and containers. This makes the use of AJAX calls to create,update and delete blocks more consistent. ``FancyPage`` models are stilledited through the dashboard and are currently not available via the RESTAPI.* Fancypages provides a *Twitter* block that allows to specify a username andpull the user's twitter feed. This requires the ``twitter-tag`` django appwhich has caused issues before.  This requirement has now been removed andthe *Twitter* block is now only available when the ``twitter-tag`` app isinstalled. If it is not, the block won't be registered with fancypages andwon't be available to be added.* UUIDs are now available on all models that are exposed via the REST API aswell as the ``FancyPage`` model. This makes sure that content blocks,containers and pages are uniquely identifyable. This will support laterfeatures such as versioning and import/export.* Major improvements to the integration tests to run Selenium test usingsaucelabs. It now covers a few fundamental use cases such as adding a newcontent block, deleting a content block and changing the content of a textblock. The plan is to run these tests against various browser versions onsaucelabs to make sure that the UI is working consistently on the most commonbrowsers.* Integrate `django-oscar-fancypages`_ as ``contrib`` package into fancypages.The main reasons for this decision was to ease maintainability for bothprojects and to avoid duplication between the two projects. The officialintegration of fancypages with Oscar now lives in``fancypages.contrib.oscar_fancypages`` and should be used instead of theexternal package. As a result the configuration required to use fancypagesin a standalone or an Oscar project has changed and will need to be updatedwhen migrating from a previous installation. We have tried to provide fullbackwards compatibility but there might be potential hickups in moving tothis version of fancypages. If you come across any issues or use cases thatwe haven't anticipated, please open an issue on github.* Containers in fancypages are now language aware by having a ``language_code``attribute that is available on the model. The language code **has** to beset and default to the ``LANGUAGE_CODE`` setting of your project. The mainprinciple for dealing with multi-language sites is to have a separatecontainer for each available language to allow total flexibility in settingup content for different languages. This might seem like a lot of additionalwork but there is a good reason for it. Different languages come withdifferent cutural habits and experiences, e.g. what people in Britain mightfind hilarious might not work in the same way for people from Germany.Therefore, the content addressed to users speaking different languages oftenhas to be adapted to work in the same or similar way. As a result we decidedto allow complete freedom in the way the "same" content is presented forusers speaking different languages. More details on this will be available inthe docs... _`django-oscar-fancypages`: https://github.com/tangentlabs/django-oscar-fancypages0.1.0-----The first public release.