[РЕШЕНО] Вывод полного текста в представлении из заполненной формы

Главные вкладки

Аватар пользователя Yarri Yarri 20 октября 2014 в 11:36

Помогите решить проблему.

Суть в следующем.
Есть созданная вебформа.
Есть список отправленных сообщений.
Есть Data Tables, который позволяет вытащить поля в представление.
Есть представление с контекстным фильтром, через который я вытаскиваю все сообщения этой формы в собственный список.
Все поля формы я прекрасно вижу, сортирую, делаю фильтры - к примеру имя, емейл, само сообщение.

Но основное поле текстового сообщения в представлении показывается в урезанном виде. Просто отрезается по количеству знаков.
Хотя в настройках отображения поля никаких ограничений на это нет. Не помогает и принудительное выставление знаков побольше. Режет, и все тут.
При этом по ссылке родного (из модуля webforms) редактирования сообщения формы текст отображается полностью.

Где это найти?

Комментарии

Аватар пользователя Yarri Yarri 28 октября 2014 в 11:29

Ни у кого нет мыслей по этому поводу?
Единственное, что нашел, так это в базе для каждой формы, которую требуется выводить в представлении, создаются дополнительные записи, в которых почему то для всех полей есть ограничение 341 знак. Независимо от того, какого типа это поле.
Попытка изменить это поле игнорируется системой. Возможно, виноват кеш, но его я чистил, и ничего не меняется.

Аватар пользователя Yarri Yarri 28 октября 2014 в 21:06

Вот решение.
Возможно, это поправят в следующей версии и это уже есть в dev-версии.
Пока это не исправлено, будьте внимательны, ибо при обновлении модулей это ручное изменение возможно будет утеряно. Работать будет, но с вновь создаваемыми таблицами будет такая же проблема.

1. Проблема обрезанных текстовых полей.
Размер varchar(341) для views лечится следующим образом.
https://www.drupal.org/node/1101954
https://www.drupal.org/files/webform_mysql_views-1101954-12.patch

diff --git a/sites/all/modules/contrib/webform_mysql_views/webform_mysql_views.module b/sites/all/modules/contrib/webform_mysql_views/webform_mysql_views.module
index 33fabe9..577c544 100644
--- a/sites/all/modules/contrib/webform_mysql_views/webform_mysql_views.module
+++ b/sites/all/modules/contrib/webform_mysql_views/webform_mysql_views.module
@@ -332,6 +332,10 @@ function webform_mysql_views_build_query($nid, $view_name) {
       case 'grid':
         $component = sprintf("(SELECT GROUP_CONCAT(no,'=',data) FROM {webform_submitted_data} AS child WHERE child.sid = parent.sid AND cid = %d) AS `%s`, ", $row->cid, $row->form_key);
         break;
+      //Webform view
+      case 'view':
+        $component = sprintf("(SELECT data FROM {webform_submitted_data} AS child WHERE child.sid = parent.sid AND cid = %d) AS `%s`, ", $row->cid, $row->form_key);
+        break;
       //Otherwise collapse multi-value fields into simple comma-separated lists
       default:
         $component = sprintf("(SELECT GROUP_CONCAT(data) FROM {webform_submitted_data} AS child WHERE child.sid = parent.sid AND cid = %d) AS `%s`, ", $row->cid, $row->form_key);

Как видим, в данном случае для запроса views убирается GROUP_CONCAT для data. И тогда в этом случае для автогенерируемой таблицы тип поля будет подставлен тот, что прописан в родной таблице.
Народ, обсуждавший это на drupal.org, задался вопросом, почему для views не было сделано такое исключение, если все поля в другой таблице всегда имеют уникальное значение.