From 0911facde954d60ca3124e03b85b3b9b47c3c6b0 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 25 Sep 2010 09:47:51 -0400
Subject: [PATCH] - Truncate message subject when setting page title

---
 program/include/rcube_shared.inc |   10 +++++++---
 program/steps/mail/show.inc      |    2 +-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index 845230d..429969e 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -407,20 +407,24 @@
 
 
 /**
- * Replace the middle part of a string with ...
- * if it is longer than the allowed length
+ * Truncate string if it is longer than the allowed length
+ * Replace the middle or the ending part of a string with a placeholder
  *
  * @param string Input string
  * @param int    Max. length
  * @param string Replace removed chars with this
+ * @param bool   Set to True if string should be truncated from the end
  * @return string Abbreviated string
  */
-function abbreviate_string($str, $maxlength, $place_holder='...')
+function abbreviate_string($str, $maxlength, $place_holder='...', $ending=false)
 {
   $length = mb_strlen($str);
   
   if ($length > $maxlength)
   {
+    if ($ending)
+      return mb_substr($str, 0, $maxlength) . $place_holder;
+
     $place_holder_length = mb_strlen($place_holder);
     $first_part_length = floor(($maxlength - $place_holder_length)/2);
     $second_starting_location = $length - $maxlength + $first_part_length + $place_holder_length;
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 3d42de6..382733f 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -41,7 +41,7 @@
   if (!empty($MESSAGE->headers->charset))
     $IMAP->set_charset($MESSAGE->headers->charset);
 
-  $OUTPUT->set_pagetitle($MESSAGE->subject);
+  $OUTPUT->set_pagetitle(abbreviate_string($MESSAGE->subject, 128, '...', true));
 
   // give message uid to the client
   $OUTPUT->set_env('uid', $MESSAGE->uid);

--
Gitblit v1.9.1