DJANGO. Установка и настройка filebrowser

Пятница, 31 Янв. 2014 by Kirill Shershen


Описание

filebrowser - батарейка для django, позволяет подключить в админку иструмент для закачки файлов на сайт, требует чтобы было установлено Django, Grappelli, Pillow. Устанавливается командой pip install django-filebrowser. Вроде всё просто. 

И так. Нужно установить filebrowser на django 1.5 и интегрировать его с редактором tinymce

Настройка filebrowser

Для корректной работы с Django 1.5 устанавливаем django-filebrowser версии 2.4.8.

Редактируем настройки settings.py:

INSTALLED_APPS = (
    ...,
    'filebrowser',
    'django.contrib.admin',
    '...',
)

FILEBROWSER_MEDIA_ROOT = MEDIA_ROOT 
FILEBROWSER_MEDIA_URL = MEDIA_URL 
FILEBROWSER_STATIC_ROOT = STATIC_ROOT 
FILEBROWSER_STATIC_URL = STATIC_URL 
URL_FILEBROWSER_MEDIA = STATIC_URL + 'filebrowser/' 
PATH_FILEBROWSER_MEDIA = STATIC_ROOT + 'filebrowser/' 

Добавляем filebrowser в INSTALLED_APPS до описания приложения admin. 

Далее описываем настройки самого filebrowser, соответственно переменные MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL должны быть описаны, далее прописываем URLs:

from filebrowser.sites import site

urlpatterns+ = patterns('',
    url(r'^grappelli/', include('grappelli.urls')),
    url(r'^admin/filebrowser/', include(site.urls)),
)

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}))

Теперь по адресу admin/filebrowser/ должен быть доступен инструмент добавления файлов. Последняя строка открывает доступ для файлов в папке MEDIA_ROOT. 

Важный момент должна быть создана папка uploads в папке MEDIA_ROOT.

На данном этапе уже можно работать с загрукой картинок и файлов на сайт. 

Интеграция с tinymce

От этой связки мне нужно чтобы в диалоге выбора картинки была кнопка вызова filebrowser. Я буду рассматривать вариант интеграции где tinymce установлен просто как набор статических файлов.

Инициализация tinymce у меня описана в файле admin.py таким образом:

class CollectionAdmin(admin.ModelAdmin):
 
    class Media:
        js = (
            '%stinymce/tiny_mce.js' % settings.STATIC_URL, 
            '%stinymce/tiny_mce_init.js' % settings.STATIC_URL,
        )

Теперь там где нужен редактор, я регистрирую объект через этот класс.

Далее необходимо в файле инициализации указать следующее:

function CustomFileBrowser(field_name, url, type, win) {
    
    var cmsURL = '/admin/filebrowser/browse/?pop=2';
    cmsURL = cmsURL + '&type=' + type;
    
    tinyMCE.activeEditor.windowManager.open({
        file: cmsURL,
        width: 980,  // Your dimensions may differ - toy around with them!
        height: 500,
        resizable: 'yes',
        scrollbars: 'yes',
        inline: 'no',  // This parameter only has an effect if you use the inlinepopups plugin!
        close_previous: 'no'
    }, {
        window: win,
        input: field_name,
        editor_id: tinyMCE.selectedInstance.editorId
    });
    return false;
}

tinyMCE.init({
    ...,
    // Callbacks
    file_browser_callback: 'CustomFileBrowser',
    ...,
});

Теперь при нажатии кнопки insert image в редакторе должно показывать так:

Теги: django , tinymce


blog comments powered by Disqus