Довольно часто появляется необходимость повесить новость, объявление, информацию для авторов или об архиве, но из коробки JSPUI умеет лишь «новости на главной» и «новости сбоку». И если в DSpace 1.x-3.x новости эти более или менее гармонично вписывались в интерфейс, то в 4.x-5.x они смотрятся архаично и не уместно, особенно, когда нужно разместить много текста на постоянку.
В качестве решения проблемы я предлагаю следующий метод: создать механизм, реализующий «свободную» страницу в дизайне JSPUI и возможность её обновления через стандартные инструменты DSpace.
В качестве примера реализации данной идеи на DSpace 3.x можно посмотреть на картинки того, как это работает в электронном архиве УРФУ (быть может, в ближайшее время мы обновимся до версии 5.х, так что останутся только картинки):
Обратите внимание на ссылку «Для авторов» в нижней части боковой панели.
Собственно содержание страницы.
Обновление контента реализовано через стандартный интерфейс обновления новостей.
Никакого вигвиза, только HTML, только хардкор!
Но описывать модификацию я буду уже для пятой версии DSpace, о чем собственно ниже. Сразу хочу предупредить что модификация получается достаточно комплексная.
И так, по шагам:
1. Идём в [dspace]/config и создаём там файл, к примеру, authors_ru.html и authors_en.html
Тут важно понимать, authors.html не есть обязательное имя! Вы можете создать файл about.html или любой другой.
2. Идём в [tomcat]/webapps/jspui и копируем файл index.jsp в новый с имемем authors.jsp, а файл home.jsp в файл authors_container.jsp:
Опять же, тут в именах файлов нет ничего обязательного. Если симысл добавляемой страницы иной — можно использовать другие имена, важно только потом не запутаться. Да, у меня jspui лежит в /ROOT, от того путь немного другой.
3. Открываем файл authors.jsp и правим его так:
Т.е. заменяем ссылку /home.jsp на /authors_container.jsp
4. Открываем файл authors_container.jsp и удаляем в нём весь индексный стакан, а так же… в общем, проще привести полный его листинг:
Здесь можно отметить следующие вещи:
- Удалены строки импорта стандартных новостей и добавлена строка «String ForAuthors = NewsManager.readNewsFile(LocaleSupport.getLocalizedMessage(pageContext, «authors.html»));»
- Изменена строка показа главных новостей на <%= ForAuthors %>
- Удалён код, показывающий разделы, коллекции и фасеты.
5. Модифицируем [tomcat]/webapps/jspui/dspace-admin/news-main.jsp следующим образом:
Т.е. добавляем еще одну строку в список редактора новостей. В моём случае это строка <option value=»<fmt:message key=»authors.html»/>»><fmt:message key=»jsp.dspace-admin.news-main.text.author»/></option>
6. Ну а теперь, казалось бы, не очевидное — правим файл перевода:
В файл messages_ru.properties добавляем строки:
- jsp.dspace-admin.news-edit.text.author = \u0410\u0432\u0442\u043E\u0440\u0430\u043C
- authors.html = authors_ru.html
В файл messages.properties добавляем строки:
- jsp.dspace-admin.news-edit.text.author = For authors
- authors.html = authors_en.html
Промежуточный итог выглядит так:
Т.е.мы имеем по адресу /authors.jsp независимую двуязыкую страницу, которая к тому же правится через админку не сложнее, чем обычные новости. В принципе профит…. только вот как простмоу пользователю получить доступ к этой странице из интерфейса?
7. Способы размещения ссылки на новую страницу я условно могу разделить на простые и изящные. Простые — это помещение ссылки в боковые или главные новости, в описание разделов и пр. А одним из изящных способов я считаю помещение ссылки в выпадающее меню.
Для этого необходимо модифицировать файл [tomcat]\webapps\ROOT\layout\navbar-default.jsp следующим образом:
т.е. визуально отделить новый пункт от старых. Результат выглядит так:
Как можно заметить, я использовал уже существующую строку перевода.
Хочу отметить тот факт, что вся эта процедура проводилась мной на рабочем архиве (Электронный архив РГППУ) и потребовала лишь одной перезагрузки сервиса — для обновления перевода. Так же хочу отметить, что под JSPUI 3.x модификация была чуть проще.
Важное дополнение.
В DSpace 5.5 и более поздних версиях закрыта опасная уязвимость. Для того, чтобы «новая» страничка заработала, нужно добавить её тут. Объяснение физики процесса тут. Так же это касается и локализованных новостей.