Typus - админка в Rails-приложениях

Я не люблю писать одинаковый код много раз, тем более тривиальный. Я не люблю писать админки для Rails-приложений, потому что они состоят по большей части как раз из такого кода. И я не люблю генераторы, создающие кучу кода, который необходимо менять только в некоторых местах (поэтому для аутентификации я использую AuthLogic, а не restful_authentication).

И поэтому я был очень рад обнаружить замечательный проект: Typus. Это плагин для Rails, позволяющий значительно упростить процесс создания админки для приложений.

Из его особенностей:

  • Позволяет практически мгновенно создать простейшую админку для моделей (создание, удаление, редактирование).
  • Автоматически поддерживаются связи между моделями.
  • Админка является расширяемой.
  • Не генерирует огромного объема кода, который потом никогда не расширяется. Только то, что необходимо – конфиграционный файл и классы констроллеров для расширения. Только классы, без кода системы администрирования в них!
  • Поддерживается локализация админки (пнглийский, испанский, португальский и русский).
  • Поддерживается экспорт данных в различные форматы.

Установка

Typus может быть установлен двумя способами:

  1. Как обычный плагин Rails, для этого в директории приложения необходимо вызвать:
    $ script/plugin install git://github.com/fesplugas/typus.git
  2. Через Ruby Gems, для этого в config/environment.rb необходимо добавить строку:
    config.gem 'typus'

После установки необходимо в директории приложения вызвать команды:

$ script/generate typus
$ rake db:migrate

В результате будут сгенерированы файлы конфигурации админки, контроллеры админки для всех существующих моделей и пара миграций, обеспечивающих работу системы пользователей Typus.

Также, для работы админки необходимо убедиться, что в конце файла config/routes.rb присутствуют строки:

map.connect ':controller.:format'
map.connect ':controller/:action/:id.:format'

Конфигурация

После установки плагина создается несколько файлов, хранящих конфигурацию:

  1. config/initalizers/typus.rb – здесь хранятся общие настройки админки
  2. config/typus/*.yml – здесь хранятся настройки для различных моделей
  3. config/typus/*_roles.yml – здесь хранятся права доступа к моделям

В первом файле задаются имя приложения, используемая локаль и т.п. Вот часть опций из него:

Typus::Configuration.options[:app_name]
Typus::Configuration.options[:config_folder]
Typus::Configuration.options[:email]
Typus::Configuration.options[:locales]
Typus::Configuration.options[:recover_password]
Typus::Configuration.options[:root]
Typus::Configuration.options[:ssl]
Typus::Configuration.options[:templates_folder]
Typus::Configuration.options[:user_class_name]
Typus::Configuration.options[:user_fk]

Например, чтобы задать русскую локаль необходимо в соответствующей опции этого файла выставить:

Typus::Configuration.options[:locales] = [ [ "Русский", :ru ] ]

В файлах настроек для моделей хранится описание того, как модели должны отображаться в админке, в частности:

  • Какие поля должны отображаться при каждом из действий;
  • Какие связи должны редактироваться;
  • По каким полям должна осуществляться фильтрация и поиск;
  • В каком порядке должны выводится записи;
  • И тому подобное…

Модификация админки

Сгенерированная админка может быть легко модифицирована одним из следующих способов:

  • (банальный) Добавление новых контроллеров в админку;
  • Добавление новых действий к существующим контроллерам. Действие описывается в сгенерированном контроллере, а его указание в конфигурационном файле админки позволяет привязать действие к интерфейсу администрирования;
  • Переопределение видов;
  • Добавление блоков в виды. В последнем случае нет необходимости переопределять весь интерфейс, достаточно толко создать партиалы, которые будут встроены в соответствующие участки интерфейса. Список возможных партиалов приведен ниже (где RESOURCE – имя редактируемой модели):
    views/admin/login/_{bottom|top}.html.erb
    views/admin/dashboard/_{bottom|sidebar|top}.html.erb
    views/admin/RESOURCE/_edit.html.erb
    views/admin/RESOURCE/_edit_{bottom|sidebar|top}.html.erb
    views/admin/RESOURCE/_index.html.erb
    views/admin/RESOURCE/_index_{bottom|sidebar|top}.html.erb
    views/admin/RESOURCE/_new.html.erb
    views/admin/RESOURCE/_new_{bottom|sidebar|top}.html.erb
    views/admin/RESOURCE/_show.html.erb
    views/admin/RESOURCE/_show_{bottom|sidebar|top}.html.erb
    

Пример приложения

На сайте проекта выложен специальный шаблон, позволяющий сгенерировать простое демонстрационное приложение. С его помощью, чтобы попробовать Typus достаточно выполнить в консоли:

$ rails example.com -m http://intraducibles.com/projects/typus/demo.txt
$ cd example.com && script/server

После этого можно заходить в админку по адресу http://127.0.0.1:3000/admin.

 Подписаться на RSS

 #  #  #  #  #  #  #  #  #  #

blog comments powered by Disqus