Страница 1 из 1

Как создать ссылку в ячейки

Добавлено: 22 ноя 2018, 17:21
dilon
Нужно, чтобы у записей в одном из поле была гиперссылка (переход на карточку клиента)
Тип поля "Поле ввода".
Эту ссылку генерирует самописный скрипт.
Ссылка выглядит следующим образом
<a href="/crm/index.php?module=items/info&path=21-1" target="_blank" >Компания АБВ</a>
Если запись не трогать, то все работает хорошо. В ячейке отображаются слова "Компания АБВ", видно что слова кликабельны (это ссылка) и при нажатии на нее происходит корректный переход.

Но беда начинается после того, как запись отредактировали. Причем редактируется не это поле, а совсем другое. После редактирования, после нажатия сохранить, в этом поле ссылка перестает быть ссылкой. В поле появляется такой текст:
_a href="/crm/index.php?module=items/info&path=21-1" target="_blank" _Компания АБВ_/a_

Причем даже есть ручками потом исправить _ _ на < >
то все равно ссылка уже не работает.

Вопрос.
В чем причина и как исправить?

Re: Как создать ссылку в ячейки

Добавлено: 22 ноя 2018, 17:35
support
Ну, если разрешить пользователям вводить <>, то можно написать <script></script> и там уже много чего интересного. Вообщем скобки экранируются в целях безопасности.

Re: Как создать ссылку в ячейки

Добавлено: 22 ноя 2018, 17:44
dilon
Понял, т.е. запрещено по безопасности.
Получается нам нужно думать, как сделать, чтобы эти записи не было нужды редактировать вовсе.
Ибо если не редактировать, то ссылки работают корректно.

Re: Как создать ссылку в ячейки

Добавлено: 23 ноя 2018, 13:35
De_mon
support писал(а): 22 ноя 2018, 17:35 Ну, если разрешить пользователям вводить <>, то можно написать <script></script> и там уже много чего интересного. Вообщем скобки экранируются в целях безопасности.
А если экранировать не скобки а текст script ?

Re: Как создать ссылку в ячейки

Добавлено: 23 ноя 2018, 14:44
support
includes\classes\fieldstypes\fieldtype_input.php

Код: Выделить всё

  function process($options)
  {
    return db_prepare_input($options['value']);
  }
Метод process сохраняет значение

Функция db_prepare_input экранирует. Замените ее на db_prepare_html_input

Re: Как создать ссылку в ячейки

Добавлено: 23 ноя 2018, 15:50
dilon
Заменил.
теперь гиперссылка не экранируется.
Спасибо.

Надеюсь такая замена ничего в срм не нарушит?

Ну кроме того, что теперь пользователи ручками могут ввести код, скрипт через < >

Re: Как создать ссылку в ячейки

Добавлено: 23 ноя 2018, 17:04
support
Не нарушит.