[drupal-devel] [bug] HTML entities possibly cut off when searching
for a string
wulff
drupal-devel at drupal.org
Tue Jul 26 11:32:08 UTC 2005
Issue status update for
http://drupal.org/node/15121
Post a follow up:
http://drupal.org/project/comments/add/15121
Project: Drupal
Version: cvs
Component: locale.module
Category: bug reports
Priority: normal
Assigned to: Anonymous
Reported by: jagdfalke
Updated by: wulff
-Status: active
+Status: patch
Attachment: http://drupal.org/files/issues/locale_15121.patch (1.25 KB)
Patch for jagdfalke's fix attached.
wulff
Previous comments:
------------------------------------------------------------------------
Tue, 04 Jan 2005 19:41:12 +0000 : jagdfalke
Hello,
when one is searching for strings in admin/locale, HTML entities within
the message strings are possibly cut off. (Text cut occurs within an
entitiy, e.g. there's """ in the string and after the cut the
string which is displayed ends with "&quo" e.g.)
This leads to invalid (X)HTML, which I just noticed using a theme which
not only uses XHTML, but also sends "application/xhtml+xml" as MIME-Type
for the document. (Therefore a browser capable of XHTML will stop
displaying the site if there is an obvious syntax error.)
Regards,
Milan
------------------------------------------------------------------------
Wed, 05 Jan 2005 14:31:29 +0000 : jagdfalke
Ok, after having had this in the back of my head for some time, I
thought that the simple fix would be to cut the string first, and apply
htmlspecialchars then (since this function removes any entities, tags
etc which would - when cut off - generate invalid markup, the problems
is solved.)
To do this, change lines 1053/1054 of includes/locale.inc, which look
like this:
<?php
$source = htmlspecialchars($value['source']);
$rows[] = array(array('data' => (strlen($source) > 150 ?
substr($source, 0, 150) .'...' : $source) .'<br /><small>'.
$value['location'] .'</small>'), array('data' =>
_locale_string_language_list($value['locales']), 'align' => 'center'),
array('data' => l(t('edit'), "admin/locale/string/edit/$lid"), 'nowrap'
=> 'nowrap'), array('data' => l(t('delete'),
"admin/locale/string/delete/$lid"), 'nowrap' => 'nowrap'));
?>
to this:
<?php
$source = htmlspecialchars(strlen($value['source']) > 150 ?
substr($value['source'], 0, 150) .'...' : $value['source']);
$rows[] = array(array('data' => $source .'<br /><small>'.
$value['location'] .'</small>'), array('data' =>
_locale_string_language_list($value['locales']), 'align' => 'center'),
array('data' => l(t('edit'), "admin/locale/string/edit/$lid"), 'nowrap'
=> 'nowrap'), array('data' => l(t('delete'),
"admin/locale/string/delete/$lid"), 'nowrap' => 'nowrap'));
?>
(the line numbers are valid for my Drupal 4.5.1.)
Regards,
Milan
------------------------------------------------------------------------
Fri, 14 Jan 2005 15:33:33 +0000 : killes at www.drop.org
If you set somethig to "patch" please include a patch file. Moving the
issue to Drupal.
------------------------------------------------------------------------
Tue, 26 Jul 2005 11:25:19 +0000 : wulff
Still exists in current HEAD.
More information about the drupal-devel
mailing list