{ "info": { "author": "Future Colors (orginal author:Shaun Sephton)", "author_email": "shaunsephton@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "Django CKEditor\n================\n**Django admin CKEditor integration.**\n\nProvides a ``RichTextField`` and ``CKEditorWidget`` utilizing CKEditor with image upload and browsing support included.\n\n.. contents:: Contents\n :depth: 5\n\nInstallation\n------------\n\n#. Install or add django-ckeditor to your python path.\n\n#. Add ``ckeditor`` to your INSTALLED_APPS setting.\n\n#. Copy the ``media/ckeditor`` directory into any directory within your media root. You can override the location in your settings (see below).\n\n#. Add a CKEDITOR_UPLOAD_PATH setting to the project's ``settings.py`` file. This setting specifies an absolute path to your ckeditor media upload directory. Make sure you have write permissions for the path, i.e.::\n\n CKEDITOR_UPLOAD_PATH = \"/home/media/media.lawrence.com/uploads\"\n\n#. Add ckeditor url include to the project's ``urls.py`` file::\n \n (r'^ckeditor/', include('ckeditor.urls')), \n\n#. Optionally, set the CKEDITOR_RESTRICT_BY_USER setting to ``True`` in the project's ``settings.py`` file (default ``False``). This restricts access to uploaded images to the uploading user (e.g. each user only sees and uploads their own images). Superusers can still see all images. **NOTE**: This restriction is only enforced within the CKEditor media browser. \n\n#. Optionally, add a CKEDITOR_UPLOAD_PREFIX setting to the project's ``settings.py`` file. This setting specifies a URL prefix to media uploaded through ckeditor, i.e.::\n\n CKEDITOR_UPLOAD_PREFIX = \"http://media.lawrence.com/media/ckuploads/\n \n (If CKEDITOR_UPLOAD_PREFIX is not provided, the media URL will fall back to MEDIA_URL with the difference of MEDIA_ROOT and the uploaded resource's full path and filename appended.)\n\n#. Optionally, add CKEDITOR_CONFIGS setting to the project's ``settings.py`` file. This specifies sets of CKEditor settings that are passed to CKEditor (see CKEditor's `Setting Configurations `_), i.e.::\n\n CKEDITOR_CONFIGS = {\n 'awesome_ckeditor': {\n 'toolbar': 'Basic',\n },\n }\n \n The name of the settings can be referenced when instantiating a RichTextField::\n\n content = RichTextField(config_name='awesome_ckeditor')\n\n The name of the settings can be referenced when instantiating a CKEditorWidget::\n\n widget = CKEditorWidget(config_name='awesome_ckeditor')\n \n By specifying a set named ``default`` you'll be applying its settings to all RichTextField and CKEditorWidget objects for which ``config_name`` has not been explicitly defined ::\n \n CKEDITOR_CONFIGS = {\n 'default': {\n 'toolbar': 'Full',\n 'height': 300,\n 'width': 300,\n },\n }\n\nUsage\n-----\n\nField\n~~~~~\nThe quickest way to add rich text editing capabilities to your models is to use the included ``RichTextField`` model field type. A CKEditor widget is rendered as the form field but in all other regards the field behaves as the standard Django ``TextField``. For example::\n\n from django.db import models\n from ckeditor.fields import RichTextField\n\n class Post(models.Model):\n content = RichTextField()\n\n\nWidget\n~~~~~~\nAlernatively you can use the included ``CKEditorWidget`` as the widget for a formfield. For example::\n\n from django import forms\n from django.contrib import admin\n from ckeditor.widgets import CKEditorWidget\n\n from post.models import Post\n\n class PostAdminForm(forms.ModelForm):\n content = forms.CharField(widget=CKEditorWidget())\n class Meta:\n model = Post\n\n class PostAdmin(admin.ModelAdmin):\n form = PostAdminForm\n \n admin.site.register(Post, PostAdmin)\n\n**NOTE**: If you're using custom views remember to include ckeditor.js in your form's media either through ``{{ form.media }}`` or through a ``