Django media browser for WYSIWYG HTML editor
Project description
Media browser for Django.
# Setup
By default mediabrowser uses [easy-thumbnails](https://github.com/SmileyChris/easy-thumbnails)
for creating image thumbnails.
In settings.py:
```python
# add mediabrowser to INSTALLED_APPS:
INSTALLED_APPS = (
...
'easy_thumbnails',
'mediabrowser',
...
)
# Optional settings:
# Where mediabrowser should upload files (default is "mb/%Y/%m"):
MEDIABROWSER_UPLOAD_TO = "mb/%Y/%m"
# URL for selecting links in your CMS.
# If set, this vlaue will be passed to {% url %} template tag:
MEDIABROWSER_PAGE_SELECTOR_URL = "my-cms-url-content-selector-name"
# Function for user access to mediabrowser
# (defaults to user.is_staff)
MEDIABROWSER_USER_PASSES_TEST = lambda user:user.is_authenticated
# Require mediabrowser to check user permissions
# (defaults to False)
MEDIABROWSER_CHECK_USER_PERMISSIONS = True
# Automatically resize uploaded images to fit within given dimensions
# (default to None, i.e. no resizing)
MEDIABROWSER_MAX_IMAGE_SIZE = (800, 400)
```
In urls.py:
```python
urlpatterns = patterns('',
...
url(r'', include('mediabrowser.urls')),
...
)
```
After having added ```mediabrowser``` to ```INSTALLED_APPS``` run ```./manage.py syncdb```.
# Controlling mediabrowser access
By default full media browser access is allowed for any authenticated staff user
(i.e., ```user.is_staff == True```). You can use the following settings to refine user access
rules:
Set ```MEDIABROWSER_USER_PASSES_TEST```. It should be a callable that takes user object as argument
and returns Boolean. It is a single access control option for uploading, browsing and deletion. Example:
```python
MEDIABROWSER_USER_PASSES_TEST = lambda user: user.has_perm("mycms.change_content")
```
Set ```MEDIABROWSER_CHECK_USER_PERMISSIONS = True```. This will ensure user must have
explicit permissions to delete or add assets.
# Integrating your CMS content browser
To integrate mediabrowser with your custom CMS to be able to select your CMS's content
to link to, do the following:
* Define your own view listing content.
* Set ```MEDIABROWSER_PAGE_SELECTOR_URL``` to url name of this view.
* Make your view's template inherit from ```mediabrowser/base.html```.
(Required context variables: asset_type=doc, page_selector_url=*your_url*)
You CMS integration view can be created by subclassing
```mediabrowser.views.BaseAssetListView```. But you can also create your view from scratch.
Just pass the following context to the template:
```python
context = {
# mediabrowser needs to retain original query string set by the editor:
'QUERY_STRING': self.request.GET.urlencode(),
# set asset_type to doc to use mediabrowser in link mode
# (as apposed to image insertion mode),
# otherwise "Browse documents" and "Browse content" tabs won't appear:
"asset_type": "doc",
# Editor needs to know your page_selector_url, otherwise it will not display the
# "Browse content" tab:
"page_selector_url": settings.MEDIABROWSER_PAGE_SELECTOR_URL
}
```
# Customizing appearance
To override CSS definitions create your own ```mediabrowser/includes/css.html``` and include your own CSS.
By default mediabrowser uses [easy-thumbnails](https://github.com/SmileyChris/easy-thumbnails). If you
would like to use your own thumbnailing engine override ```mediabrowser/includes/asset-listing.html```.
# WYSIWYG integration
## CKEditor
In Django template:
```html
<script>
// To activate image broswer:
CKEDITOR.config.filebrowserImageBrowseUrl = "{% url 'mediabrowser-add-image' %}";
// To activate file browser:
CKEDITOR.config.filebrowserLinkBrowseUrl = "{% url 'mediabrowser-add-document' %}";
</script>
```
For details see [CKEditor documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-filebrowserImageBrowseUrl).
## Custom integration
```javascript
MEDIABROWSER.insertFile = function(asset_url) {
// handle asset insertion here
}
```
This can be done inside your own ```mediabrowser/includes/head.html``` include file.
Note that you don't need to close editor window from your custom fuction. This will be done
automatically after your funciton is executed.
# Setup
By default mediabrowser uses [easy-thumbnails](https://github.com/SmileyChris/easy-thumbnails)
for creating image thumbnails.
In settings.py:
```python
# add mediabrowser to INSTALLED_APPS:
INSTALLED_APPS = (
...
'easy_thumbnails',
'mediabrowser',
...
)
# Optional settings:
# Where mediabrowser should upload files (default is "mb/%Y/%m"):
MEDIABROWSER_UPLOAD_TO = "mb/%Y/%m"
# URL for selecting links in your CMS.
# If set, this vlaue will be passed to {% url %} template tag:
MEDIABROWSER_PAGE_SELECTOR_URL = "my-cms-url-content-selector-name"
# Function for user access to mediabrowser
# (defaults to user.is_staff)
MEDIABROWSER_USER_PASSES_TEST = lambda user:user.is_authenticated
# Require mediabrowser to check user permissions
# (defaults to False)
MEDIABROWSER_CHECK_USER_PERMISSIONS = True
# Automatically resize uploaded images to fit within given dimensions
# (default to None, i.e. no resizing)
MEDIABROWSER_MAX_IMAGE_SIZE = (800, 400)
```
In urls.py:
```python
urlpatterns = patterns('',
...
url(r'', include('mediabrowser.urls')),
...
)
```
After having added ```mediabrowser``` to ```INSTALLED_APPS``` run ```./manage.py syncdb```.
# Controlling mediabrowser access
By default full media browser access is allowed for any authenticated staff user
(i.e., ```user.is_staff == True```). You can use the following settings to refine user access
rules:
Set ```MEDIABROWSER_USER_PASSES_TEST```. It should be a callable that takes user object as argument
and returns Boolean. It is a single access control option for uploading, browsing and deletion. Example:
```python
MEDIABROWSER_USER_PASSES_TEST = lambda user: user.has_perm("mycms.change_content")
```
Set ```MEDIABROWSER_CHECK_USER_PERMISSIONS = True```. This will ensure user must have
explicit permissions to delete or add assets.
# Integrating your CMS content browser
To integrate mediabrowser with your custom CMS to be able to select your CMS's content
to link to, do the following:
* Define your own view listing content.
* Set ```MEDIABROWSER_PAGE_SELECTOR_URL``` to url name of this view.
* Make your view's template inherit from ```mediabrowser/base.html```.
(Required context variables: asset_type=doc, page_selector_url=*your_url*)
You CMS integration view can be created by subclassing
```mediabrowser.views.BaseAssetListView```. But you can also create your view from scratch.
Just pass the following context to the template:
```python
context = {
# mediabrowser needs to retain original query string set by the editor:
'QUERY_STRING': self.request.GET.urlencode(),
# set asset_type to doc to use mediabrowser in link mode
# (as apposed to image insertion mode),
# otherwise "Browse documents" and "Browse content" tabs won't appear:
"asset_type": "doc",
# Editor needs to know your page_selector_url, otherwise it will not display the
# "Browse content" tab:
"page_selector_url": settings.MEDIABROWSER_PAGE_SELECTOR_URL
}
```
# Customizing appearance
To override CSS definitions create your own ```mediabrowser/includes/css.html``` and include your own CSS.
By default mediabrowser uses [easy-thumbnails](https://github.com/SmileyChris/easy-thumbnails). If you
would like to use your own thumbnailing engine override ```mediabrowser/includes/asset-listing.html```.
# WYSIWYG integration
## CKEditor
In Django template:
```html
<script>
// To activate image broswer:
CKEDITOR.config.filebrowserImageBrowseUrl = "{% url 'mediabrowser-add-image' %}";
// To activate file browser:
CKEDITOR.config.filebrowserLinkBrowseUrl = "{% url 'mediabrowser-add-document' %}";
</script>
```
For details see [CKEditor documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-filebrowserImageBrowseUrl).
## Custom integration
```javascript
MEDIABROWSER.insertFile = function(asset_url) {
// handle asset insertion here
}
```
This can be done inside your own ```mediabrowser/includes/head.html``` include file.
Note that you don't need to close editor window from your custom fuction. This will be done
automatically after your funciton is executed.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mediabrowser-0.1.6.tar.gz
(222.9 kB
view details)
File details
Details for the file mediabrowser-0.1.6.tar.gz
.
File metadata
- Download URL: mediabrowser-0.1.6.tar.gz
- Upload date:
- Size: 222.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bbf1dc5dabfeab36f5b37fd6b7901cc6225e80db0fda592e68b4f49ffa12695 |
|
MD5 | 8c081bd11c579658d0f59897bb63fefa |
|
BLAKE2b-256 | f5a67fb2a2e6ec012d5bfda3caf5f8e49637772af0686d7623f6366cd4a484e8 |