From ce988a0778aee7fb42ce5fc42e2986d562b6ccbb Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 09 Feb 2011 05:33:26 -0500
Subject: [PATCH] Always generate valid DOM identifiers using html_identifier() write original identifier string to rel attribute where possible

---
 program/include/main.inc |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index 35f9ddc..dd86a78 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -741,6 +741,16 @@
 }
 
 /**
+ * Convert the given string into a valid HTML identifier
+ * Same functionality as done in app.js with this.identifier_expr
+ *
+ */
+function html_identifier($str)
+{
+  return asciiwords($str, true, '_');
+}
+
+/**
  * Remove single and double quotes from given string
  *
  * @param string Input value
@@ -791,7 +801,7 @@
     while ($table_data && ($sql_arr = $db->fetch_assoc($table_data)))
     {
       $zebra_class = $c % 2 ? 'even' : 'odd';
-      $table->add_row(array('id' => 'rcmrow' . $sql_arr[$id_col], 'class' => $zebra_class));
+      $table->add_row(array('id' => 'rcmrow' . html_identifier($sql_arr[$id_col]), 'class' => $zebra_class));
 
       // format each col
       foreach ($a_show_cols as $col)
@@ -808,7 +818,7 @@
       if (!empty($row_data['class']))
         $zebra_class .= ' '.$row_data['class'];
 
-      $table->add_row(array('id' => 'rcmrow' . $row_data[$id_col], 'class' => $zebra_class));
+      $table->add_row(array('id' => 'rcmrow' . html_identifier($row_data[$id_col]), 'class' => $zebra_class));
 
       // format each col
       foreach ($a_show_cols as $col)
@@ -1487,7 +1497,7 @@
     }
 
     // make folder name safe for ids and class names
-    $folder_id = asciiwords($folder['id'], true, '_');
+    $folder_id = html_identifier($folder['id']);
     $classes = array('mailbox');
 
     // set special class for Sent, Drafts, Trash and Junk
@@ -1522,6 +1532,7 @@
     $link_attrib = $folder['virtual'] ? array() : array(
       'href' => rcmail_url('', array('_mbox' => $folder['id'])),
       'onclick' => sprintf("return %s.command('list','%s',this)", JS_OBJECT_NAME, $js_name),
+      'rel' => $folder['id'],
       'title' => $title,
     );
 

--
Gitblit v1.9.1