Package: coop-cms
Coop-cms, a really pluggable CMSYet another CMS ?Quick startYet another CMS ?Coop-cms is built around Articles. It defines a basic abstract model so you can define your own model.It has a website tree in a nice admin widget, to let you order Articles andany other standard django modelyou’ve defined in your project.Based on the tree, you get templatetags for menu navigation, siblings links, breadcrumb, etcCoop-cms has some sister apps to make it more usable:coop_bar, an extensible toolbar (same concept : any app you create can add links in the toolbar)djaloha, a great in-site editor based onAloha Editorcolorbox, make easy integration of jquery colorbox library.Quick startPython 2.6+, Django 1.3+ requiredInstall it withpip installcoop-cmsurls.pyAtthe very endof your urls.py file, add:urlpatterns += patterns('',
    (r'^djaloha/', include('djaloha.urls')),
    (r'^', include('coop_cms.urls')),
    (r'^coop_bar/', include('coop_bar.urls')),
)Please note that coop-cms will handle any page slug, except the ones you will have defined before.settings.pyIn settings.py:MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'pagination.middleware.PaginationMiddleware',
    ...
)

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    'django.core.context_processors.request',
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.contrib.messages.context_processors.messages",
    ...
)

AUTHENTICATION_BACKENDS = (
    'coop_cms.perms_backends.ArticlePermissionBackend',
    'django.contrib.auth.backends.ModelBackend', # Django's default auth backend
)

INSTALLED_APPS = (
    # Contribs
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',

    #3rd parties
    'south',
    'django_extensions',
    'sorl.thumbnail',
    'floppyforms',
    'pagination',
    'chosen', #optional but recommended. You must install it separately

    #apps
    'coop_bar',
    'djaloha',
    'colorbox',
    'coop_cms',

    #The coop_cms Article is an abstract model, you must define an Article in one of your app
    #We provide 2 apps that can be used if needed. Choose one or the other
    #'coop_cms.apps.basic_cms', #Nothing else than a concrete Article model.
    'coop_cms.apps.demo_cms', #A ready-to-use example app.

    #The app below make possible to create articles from a RSS feed. Add it if needed
    'coop_cms.apps.rss_sync',
)

#These are settings to customize the CMS behavior. The values are just examples and correspond to the demo_cms app.

#Define the Concrete Article to use. Not required if basic_cms is used
COOP_CMS_ARTICLE_CLASS = 'coop_cms.apps.demo_cms.models.Article'

#Define a custom form for Article editing. Not required if basic_cms is used
COOP_CMS_ARTICLE_FORM = 'coop_cms.apps.demo_cms.forms.ArticleForm'

#Make possible to customize the menus in the admin bar. Optional.
#If not defined, the tuple is build with the coop_bar_cfg modules of all INSTALLED_APPS
COOPBAR_MODULES = (
    'coop_cms.apps.demo_cms.my_coop_bar',
)

#Populate the urls when editing <a> tag in Aloha editor
DJALOHA_LINK_MODELS = (
    'demo_cms.Article',
)

# Optional: you can overload the aloha plugins used by coop_cms --> see djaloha docs for details
DJALOHA_PLUGINS = (
    "common/format",
    "common/highlighteditables",
)

# Optional: you can change the jquery version used by aloha --> see djaloha docs for details
DJALOHA_JQUERY = 'js/jquery.1.7.2.js'

# Optional : you can customize the whole behavior of aloha by proving the url of config file.
# It will overload the config provided by djaloha --> see djaloha for details
DJALOHA_INIT_URL = '/static/js/my_aloha_config.js'

#Default size of the article logo. Can be changed in template
COOP_CMS_ARTICLE_LOGO_SIZE = "128x128"

#Templates that can be used for an article
#It can be a tuple or a function returning a tuple
COOP_CMS_ARTICLE_TEMPLATES = 'coop_cms.apps.demo_cms.get_article_templates'
#COOP_CMS_ARTICLE_TEMPLATES = (
#    ('standard.html', 'Standard'),
#    ('homepage.html', 'Homepage'),
#    ('blog.html', 'Blog'),
#)

#Prefix for making absolute links
COOP_CMS_SITE_PREFIX = 'http://127.0.0.1:8000'

#from email : the domain of this address should allow the IP of your SMTP server : See SPF
COOP_CMS_FROM_EMAIL = '"Your name" <your@email.com>'

#TODO : REPLY-TO
COOP_CMS_REPLY_TO = '"Your name" <your@email.com>'

# Email address to send a newsletter test
COOP_CMS_TEST_EMAILS = (
    '"Your name" <your@email.com>',
)

#tuples of templates that can be used for a newsletter.
COOP_CMS_NEWSLETTER_TEMPLATES = (
    ('basic_newsletter.html', 'Basic'),
    ('special_newsletter.html', 'With sections'),
    ('sortable_newsletter.html', 'Sortable sections'),
)
#optional : A custom form for editing the newsletter
COOP_CMS_NEWSLETTER_FORM = 'coop_cms.apps.demo_cms.forms.SortableNewsletterForm'Base templateYou need to create a base templatebase.htmlin one of your template folders. Thearticle.htmlwill inherit from this base template.You need the following templatetags libs:{% load coop_navigation coop_bar_tags %}In the <head> of the document:{% coop_bar_headers %}
{% block jquery_declaration %}{% endblock %}
{% block extra_head %}{% endblock %}In the <body> of the document:{% block document %}...{% endblock %}
{% coop_bar %}Just before </body> at the end of the document:{% coop_bar_footer %}You can also put some navigations in the <body>:{% navigation_as_nested_ul %}The navigation_as_nested_ul templatetag accepts several argstree=”english” –> The name of the navigation_tree to use. “default” if missingli_template=”dropdown_li.html” –> a template for every <li> tagsul_template=”dropdown_ul.html” –> a template for every <ul> tagsli_args=”dropdown_li_class.html” —> args to be used for any <li> tagsThere are others templatetags for navigation :navigation_breadcrumb,navigation_children,navigation_siblingswith similar behaviorNavigation configurationDon’t forget to register the navigable types. In order to be accessible from the navigation, Model classes must be registered.In the django admin, go to coop_cms - Navigable typesAdd a new object and choose the model class you want to make accessible in navigationDefine how to get the label in navigation for a given object : use the __unicode__, use the search field or use a custom get_label methodIf search_field is choosed, define the name of this field.The search field make possible to define which field to use when the navigation tree ask for matching objects.Then Go to a Navigation object in admin, the admin page propose to configure it thanks to a tree viewType some text in the text field at the topThe field autocomplete propose all the objects of a NavigableType matching the text you enteredSelect one object and click ‘Add a new item’The object is now part of the current navigationGoing furtherYou can look at the demo_app in apps folder to see how to customize the behavior of coop_cms:Editable “pieces of HTML” in your page : A editable block that can be shared by several pages.Custom templates for articles and newslettersCustom fields in articleCustom admin barConfiguration valuesLicensecoop-cms uses the same license as Django (BSD).coop-cms development was funded byCREDIS, FSE (European Social Fund) and Conseil Regional d’Auvergne.