Как переопределить представления на вкладке «Изображения» в административной области RefineryCMS?

Можно ли как-то переопределить интерфейс администратора RefineryCMS? В настоящее время я работаю над онлайн-портфолио на основе RefineryCMS + плагин Portfolio. Я в основном хочу отображать названия изображений и описание, которые, к сожалению, отсутствуют. К счастью, я нашел инструкции о том, как взломать такого рода функциональность в области администратора, но я просто не знаю, как переопределить эти файлы просмотра в папке «vendor/plugins».

Вот ссылка на инструкцию, которую я нашел:

http://groups.google.com/group/refinery-cms/browse_thread/thread/929d7462cf075189?pli=1

Я знаю, что это руководство написано для Rails 2 и прежней версии RefineryCMS, так что все могло измениться, и, вероятно, мне придется делать это каждый раз совсем по-другому.

Заранее спасибо.

... Мне действительно интересно, почему они до сих пор не реализовали эти функции в плагине.


person Julian Weimer    schedule 06.12.2011    source источник
comment
Если я ответил на ваш вопрос (ниже), пожалуйста, отметьте его как принятый - спасибо!   -  person parndt    schedule 10.08.2014


Ответы (1)


Ответ на вопрос, почему они не добавляются в расширение портфолио по умолчанию, заключается в том, что у основной команды, стоящей за портфолио, не было случаев, когда они были бы полезны. Мы полагаемся на исправления для улучшения или добавления функциональности людьми, которые сталкиваются с этой потребностью. Существует открытая проблема, решение которой пока никто не придумал.

Что касается самой реализации; чтобы переопределить файл, который вы хотите переопределить, вы должны использовать задачу "bundle exec rake Refinery:override" (используя этот пост в качестве ссылки) следующим образом:

bundle exec rake refinery:override view=portfolio/_main_image
bundle exec rake refinery:override view=portfolio/show

Это поместит шаблоны в app/views/portfolio/, чтобы вы могли изменить их содержимое.

Вам также придется изменить синтаксис миграции с rails 2 на rails 3, поэтому вместо «script/generate» будет «rails generate».

Поскольку расширение изображений по умолчанию использует «attr_accessible» для обеспечения безопасности, вам придется использовать следующий код где-то вроде config/application.rb:

# Make the title and body fields added to Image accessible for mass assignment
config.to_prepare do
  Image.send :attr_accessible, :title
  Image.send :attr_accessible, :body
end

Пожалуйста, дайте мне знать, если вы хотите, чтобы что-то из этого прояснилось, или если я не совсем удовлетворительно ответил на ваши вопросы, и я уточню.

РЕДАКТИРОВАТЬ:

Если вы хотите переопределить внутреннее представление для изображений, просто выполните тот же процесс, но для внутренних представлений:

bundle exec rake refinery:override view=admin/images/_form

Теперь просто добавьте поля в том же формате:

<div class='field'>
  <%= f.label :title %>
  <%= f.text_field :title %>
</div>
<div class='field'>
  <%= f.label :body %>
  <%= f.text_area :body, :class => 'wymeditor widest' %>
</div>

Поскольку вы уже добавили код attr_accessible, он сохранится.

Дайте мне знать, если это не то, что вы хотели.

Фил

person parndt    schedule 06.12.2011
comment
Спасибо за ваш подробный ответ. Я уже знал о возможности переопределения представлений с помощью инструментов командной строки переработчика, но никак не мог добраться до внутренних представлений для панели администратора, куда хотел добавить нужные поля формы. Поэтому на данный момент мое решение состоит в том, чтобы позволить пользователю-администратору помещать дополнительную информацию прямо в имя файла, например: Title.Oil_on_canvas.30x30.jpg. Затем я в настоящее время анализирую эту строку в представлении. - person Julian Weimer; 07.12.2011
comment
Было бы здорово, если бы пользователи-администраторы или, по крайней мере, разработчики могли добавлять дополнительные поля как на страницы, так и на изображения. Я думаю, что это сделало бы Refinery более гибкой CMS. - person Julian Weimer; 07.12.2011
comment
Извините, я отвечал, основываясь на том, на что вы ссылаетесь. Я обновлю свой ответ соответствующим образом. Вы можете переопределить все (Refinery — очень гибкая CMS) - person parndt; 13.12.2011