2015-08-04 2 views
4

Я хотел бы сократить имя файла, отображаемое в представлении простого элемента.Как сократить имя файла, отображаемое в DSpace

Если у меня есть очень длинное имя файла, это отображается в простой записи элемента: имя файла

simple-view

Этот пример сокращается, если посмотреть полную запись пункт:

full-record-view

Но если вы отредактируете этот элемент и нажмите на ссылку Элемент Bitstreams, имя файла будет отображаться следующим образом:

enter image description here

Моя цель состоит в том, чтобы применить то, что отображается в редактирования битового потока (3-я фотография) к простому и виду товара. Я не знаю, где это преобразование создается. Я посмотрел на Administrative.xsl, и я не могу найти ничего об сокращении имени файла. Проконсультируйтесь о том, как достичь этого или где искать эту трансформацию.

ответ

2

Переписывание имени файла на вкладке «Item Bitstreams» выполняется в Java-коде, а не в XSL. Он находится здесь: EditItemBitstreamsForm.java.

Ваш скриншот страницы с изображением выглядит так, как будто вы работаете в XMLUI/Mirage 2, верно? Лучше всего использовать метод shortenString в org.dspace.app.xmlui.utils.XSLUtils (code). На самом деле, может быть, вы не используете Mirage 2, потому что Mirage 2 делает именно это, см item-view.xsl:

<xsl:value-of select="util:shortenString(mets:FLocat[@LOCTYPE='URL']/@xlink:title, 30, 5)"/> 
+0

Скриншот от Mirage 2. 'util: shortenString', если я не ошибаюсь, используется в полном представлении записи элемента (как на втором скриншоте)? Я хочу вставить эллипсис в середине строки, а не в конец, т.е. 'это очень ... для файла name.pdf'. Спасибо, что указали мне на «EditItemBitstreamsForm.java», но я не знаю, как переносить этот код в xslt. – euler

+0

Не обращай внимания на Андреа, я думаю, что понял. Еще раз спасибо. ;-) – euler

1

Благодаря Andrea для ответа. Вот мой код и как я его использовал.

Я создал новый метод shortenFileName в org.dspace.app.xmlui.utils.XSLUtils

public static String shortenFileName(String string, String middle, int targetLength) { 
     targetLength = Math.abs(targetLength); 

     if (string != null && string.length() > targetLength) { 
      // If the file name is too long then shorten it so that it will display nicely. 
      return StringUtils.abbreviateMiddle(string, middle, targetLength); 
     } 
     else 
      return string; 
    } 

, а затем использовали его в item-view.xsl так:

<xsl:value-of select="util:shortenFileName(mets:FLocat[@LOCTYPE='URL']/@xlink:title, ' &#8230; ', 20)" /> 

Имя файл Теперь выглядел следующим образом:

enter image description here

+0

Извините, да, вы писали, что хотите сократить его посередине, я пропустил это. Ваше решение отлично выглядит! – schweerelos

Смежные вопросы