Довольно часто появляется необходимость повесить новость, объявление, информацию для авторов или об архиве, но из коробки 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 и более поздних версиях закрыта опасная уязвимость. Для того, чтобы «новая» страничка заработала, нужно добавить её тут. Объяснение физики процесса тут. Так же это касается и локализованных новостей.
Спасибо за полезную информацию. Я очень благодарна Вам за такие ценные публикации. Простому библиотекарю сложно разобраться в таких тонкостях. Хорошо, что есть программисты, которые могут делиться идеями. Спасибо
You are wellcome! Я в своё время тоже начинал с инструкций Андрея Николаева (известен как woodyfon) и вряд ли бы разобрался сам, так что, я за сильное сообщество и конечно за конкуренцию, но за конкуренцию контента, а не идей! Все идеи — в массы! Кстати, Вы с нуля стартуете репозиторий или старый обновляете? Посмотрите сюда — http://ideafix.name/?p=1882 во все эти отраслевые агрегаторы Вы можете зарегистрироваться бесплатно или почти бесплатно (у worldcat выдаётся бесплатная лицензия по запросу), это сильно добавит посещаемости вашему репозиторию и косвенно увеличит цитируемость.
Репозитарий с нуля, установили месяц назад. Сейчас настраиваю интерфейс и буду наполнять публикациями, когда будет немного публикаций, тогда откроют полный доступ. На данный момент доступ к репозитарию локально. Спасибо за информацию по поводу регистрации.
Лучше сразу открыть с реальным именем ресурса и везде зарегистрироваться. В «нуле» нет ничего стыдного, а терять месяц-два на регистрацию — непозволительная роскошь. Зато потом, когда в гугл вебмастере будете находить ссылки на свои документы в библиографических справках коллег (котоыре их в гугл академии найдут), будет виден результат 🙂
Так долго регистрация:( Я думала наполнить архив, а потом уже зарегистрироваться. Спасибо за подсказку будем регистрироваться.
Где-то быстрее, где-то медленнее… но быстро-быстро — нигде 🙂
Если хотим добавить свои элементы, то создаем свою схему и выводим ее на форму ввода сведения о добавляемом документе?
Да. Для новых элементов либо правим существующие реестры, либо создаём новый и в конфиге добавляем эти поля. Так же нужно модифицировать файлы переводов и русский и английский. Иначе будет не красиво.