aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <redmatrix@redmatrix.me>2015-09-25 06:37:38 +1000
committerredmatrix <redmatrix@redmatrix.me>2015-09-25 06:37:38 +1000
commitc42dcd5ac9c63cd42c7af1b2765dd33e7e9f5d6d (patch)
tree807d13d17606303a2bccad06f7328d85daa023cb
parente04f04ef0f79d938576668c57d7240d376155a8a (diff)
parentb9723aa85bb10347ca28df0e15b16dabea11ec1d (diff)
downloadvolse-hubzilla-c42dcd5ac9c63cd42c7af1b2765dd33e7e9f5d6d.tar.gz
volse-hubzilla-c42dcd5ac9c63cd42c7af1b2765dd33e7e9f5d6d.tar.bz2
volse-hubzilla-c42dcd5ac9c63cd42c7af1b2765dd33e7e9f5d6d.zip
Merge pull request #55 from git-marijus/master
some heavy private mail restructuring - work in progress
-rw-r--r--include/message.php34
-rw-r--r--include/nav.php8
-rw-r--r--include/widgets.php97
-rw-r--r--mod/mail.php199
-rw-r--r--mod/message.php37
-rw-r--r--view/css/widgets.css1
-rw-r--r--view/js/mod_mail.js1
-rw-r--r--view/pdl/mod_mail.pdl3
-rw-r--r--view/theme/redbasic/css/style.css4
-rwxr-xr-xview/tpl/mail_display.tpl2
-rwxr-xr-xview/tpl/mail_head.tpl16
-rwxr-xr-xview/tpl/mail_list.tpl13
-rwxr-xr-xview/tpl/message_side.tpl11
13 files changed, 285 insertions, 141 deletions
diff --git a/include/message.php b/include/message.php
index efe1a7710..4b0236db8 100644
--- a/include/message.php
+++ b/include/message.php
@@ -262,18 +262,30 @@ function private_messages_list($uid, $mailbox = '', $start = 0, $numitems = 0) {
);
if(! $x)
return array();
- if($mailbox === 'inbox')
- $where = " and sender_xchan != '" . dbesc($x[0]['channel_hash']) . "' ";
- elseif($mailbox === 'outbox')
- $where = " and sender_xchan = '" . dbesc($x[0]['channel_hash']) . "' ";
+
+ $channel_hash = dbesc($x[0]['channel_hash']);
+ $local_channel = intval(local_channel());
+
+ switch($mailbox) {
+
+ case 'inbox':
+ $sql = "SELECT * FROM mail WHERE channel_id = $local_channel AND from_xchan != '$channel_hash' ORDER BY created DESC $limit";
+ break;
+
+ case 'outbox':
+ $sql = "SELECT * FROM mail WHERE channel_id = $local_channel AND from_xchan = '$channel_hash' ORDER BY created DESC $limit";
+ break;
+
+ case 'combined':
+ $sql = "SELECT * FROM ( SELECT * FROM mail WHERE channel_id = $local_channel ORDER BY created DESC $limit ) AS temp_table GROUP BY parent_mid ORDER BY created DESC";
+ break;
+
+ }
+
}
- // For different orderings, consider applying usort on the results. We thought of doing that
- // inside this function or having some preset sorts, but don't wish to limit app developers.
-
- $r = q("SELECT * from mail WHERE channel_id = %d $where order by created desc $limit",
- intval(local_channel())
- );
+ $r = q($sql);
+
if(! $r) {
return array();
}
@@ -437,4 +449,4 @@ function private_messages_fetch_conversation($channel_id, $messageitem_id, $upda
return $messages;
-} \ No newline at end of file
+}
diff --git a/include/nav.php b/include/nav.php
index 972795e83..1630c4731 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -185,11 +185,11 @@ EOT;
$nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
$nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '','');
- $nav['messages'] = array('message', t('Mail'), "", t('Private mail'),'mail_nav_btn');
- $nav['messages']['all']=array('message', t('See all private messages'), "", "");
+ $nav['messages'] = array('mail/combined', t('Mail'), "", t('Private mail'),'mail_nav_btn');
+ $nav['messages']['all']=array('mail/combined', t('See all private messages'), "", "");
$nav['messages']['mark'] = array('', t('Mark all private messages seen'), '','');
- $nav['messages']['inbox'] = array('message', t('Inbox'), "", t('Inbox'));
- $nav['messages']['outbox']= array('message/sent', t('Outbox'), "", t('Outbox'));
+ $nav['messages']['inbox'] = array('mail/inbox', t('Inbox'), "", t('Inbox'));
+ $nav['messages']['outbox']= array('mail/outbox', t('Outbox'), "", t('Outbox'));
$nav['messages']['new'] = array('mail/new', t('New Message'), "", t('New Message'));
diff --git a/include/widgets.php b/include/widgets.php
index 5e40bf54a..9f8b88d54 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -562,14 +562,30 @@ function widget_mailmenu($arr) {
return;
$a = get_app();
+
return replace_macros(get_markup_template('message_side.tpl'), array(
- '$title' => t('Messages'),
- '$tabs'=> array(),
+ '$title' => t('Private Mail Menu'),
'$check'=>array(
'label' => t('Check Mail'),
- 'url' => $a->get_baseurl(true) . '/message',
+ 'url' => $a->get_baseurl(true) . '/mail/combined',
'sel' => (argv(1) == ''),
),
+
+ '$combined'=>array(
+ 'label' => t('Combined View'),
+ 'url' => $a->get_baseurl(true) . '/mail/combined',
+ 'sel' => (argv(1) == 'combined'),
+ ),
+ '$inbox'=>array(
+ 'label' => t('Inbox'),
+ 'url' => $a->get_baseurl(true) . '/mail/inbox',
+ 'sel' => (argv(1) == 'inbox'),
+ ),
+ '$outbox'=>array(
+ 'label' => t('Outbox'),
+ 'url' => $a->get_baseurl(true) . '/mail/outbox',
+ 'sel' => (argv(1) == 'outbox'),
+ ),
'$new'=>array(
'label' => t('New Message'),
'url' => $a->get_baseurl(true) . '/mail/new',
@@ -578,6 +594,78 @@ function widget_mailmenu($arr) {
));
}
+
+function widget_conversations($arr) {
+ if (! local_channel())
+ return;
+
+ $a = get_app();
+
+ if(argc() > 1) {
+
+ switch(argv(1)) {
+ case 'combined':
+ $mailbox = 'combined';
+ $header = t('Conversations');
+ break;
+ case 'inbox':
+ $mailbox = 'inbox';
+ $header = t('Received Messages');
+ break;
+ case 'outbox':
+ $mailbox = 'outbox';
+ $header = t('Sent Messages');
+ break;
+ default:
+ $mailbox = 'combined';
+ $header = t('Conversations');
+ break;
+ }
+
+ require_once('include/message.php');
+
+ // private_messages_list() can do other more complicated stuff, for now keep it simple
+ $r = private_messages_list(local_channel(), $mailbox, $a->pager['start'], $a->pager['itemspage']);
+
+ if(! $r) {
+ info( t('No messages.') . EOL);
+ return $o;
+ }
+
+ $messages = array();
+
+ foreach($r as $rr) {
+
+ $messages[] = array(
+ 'id' => $rr['id'],
+ 'from_name' => $rr['from']['xchan_name'],
+ 'from_url' => chanlink_hash($rr['from_xchan']),
+ 'from_photo' => $rr['from']['xchan_photo_s'],
+ 'to_name' => $rr['to']['xchan_name'],
+ 'to_url' => chanlink_hash($rr['to_xchan']),
+ 'to_photo' => $rr['to']['xchan_photo_s'],
+ 'subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'),
+ 'delete' => t('Delete conversation'),
+ 'body' => $rr['body'],
+ 'date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')),
+ 'seen' => $rr['seen']
+ );
+ }
+
+ $tpl = get_markup_template('mail_head.tpl');
+ $o .= replace_macros($tpl, array(
+ '$header' => $header,
+ '$messages' => $messages
+ ));
+
+ $o .= alt_pager($a,count($r));
+
+ }
+
+ return $o;
+}
+
+
function widget_design_tools($arr) {
$a = get_app();
@@ -594,6 +682,7 @@ function widget_design_tools($arr) {
return design_tools();
}
+
function widget_findpeople($arr) {
return findpeople_widget();
}
@@ -1135,4 +1224,4 @@ function widget_admin($arr) {
return $o;
-} \ No newline at end of file
+}
diff --git a/mod/mail.php b/mod/mail.php
index 80d7f477d..2e7e3699a 100644
--- a/mod/mail.php
+++ b/mod/mail.php
@@ -101,7 +101,7 @@ function mail_post(&$a) {
notice($ret['message']);
}
- goaway(z_root() . '/message');
+ goaway(z_root() . '/mail/combined');
}
@@ -137,7 +137,7 @@ function mail_content(&$a) {
if($r) {
info( t('Message deleted.') . EOL );
}
- goaway($a->get_baseurl(true) . '/message' );
+ goaway($a->get_baseurl(true) . '/mail/combined' );
}
if((argc() == 3) && (argv(1) === 'recall')) {
@@ -153,7 +153,7 @@ function mail_content(&$a) {
if($r) {
info( t('Message recalled.') . EOL );
}
- goaway($a->get_baseurl(true) . '/message' );
+ goaway($a->get_baseurl(true) . '/mail/combined' );
}
@@ -249,117 +249,128 @@ function mail_content(&$a) {
return $o;
}
+ switch(argv(1)) {
+ case 'combined':
+ $mailbox = 'combined';
+ break;
+ case 'inbox':
+ $mailbox = 'inbox';
+ break;
+ case 'outbox':
+ $mailbox = 'outbox';
+ break;
+ default:
+ $mailbox = 'combined';
+ break;
+ }
- if((argc() > 1) && (intval(argv(1)))) {
+ $last_message = private_messages_list(local_channel(), $mailbox, 0, 1);
- $o .= $header;
+ $mid = ((argc() > 1) && (intval(argv(1)))) ? argv(1) : $last_message[0]['id'];
- $plaintext = true;
+ $plaintext = true;
-// if( local_channel() && feature_enabled(local_channel(),'richtext') )
-// $plaintext = false;
+// if( local_channel() && feature_enabled(local_channel(),'richtext') )
+// $plaintext = false;
- $messages = private_messages_fetch_conversation(local_channel(), argv(1), true);
+ $messages = private_messages_fetch_conversation(local_channel(), $mid, true);
- if(! $messages) {
- info( t('Message not found.') . EOL);
- return $o;
- }
+ if(! $messages) {
+ //info( t('Message not found.') . EOL);
+ return;
+ }
- if($messages[0]['to_xchan'] === $channel['channel_hash'])
- $a->poi = $messages[0]['from'];
- else
- $a->poi = $messages[0]['to'];
+ if($messages[0]['to_xchan'] === $channel['channel_hash'])
+ $a->poi = $messages[0]['from'];
+ else
+ $a->poi = $messages[0]['to'];
-// require_once('include/Contact.php');
+// require_once('include/Contact.php');
-// $a->set_widget('mail_conversant',vcard_from_xchan($a->poi,$get_observer_hash,'mail'));
+// $a->set_widget('mail_conversant',vcard_from_xchan($a->poi,$get_observer_hash,'mail'));
- $tpl = get_markup_template('msg-header.tpl');
+ $tpl = get_markup_template('msg-header.tpl');
- $a->page['htmlhead'] .= replace_macros($tpl, array(
- '$nickname' => $channel['channel_address'],
- '$baseurl' => $a->get_baseurl(true),
- '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
- '$linkurl' => t('Please enter a link URL:'),
- '$expireswhen' => t('Expires YYYY-MM-DD HH:MM')
- ));
-
+ $a->page['htmlhead'] .= replace_macros($tpl, array(
+ '$nickname' => $channel['channel_address'],
+ '$baseurl' => $a->get_baseurl(true),
+ '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
+ '$linkurl' => t('Please enter a link URL:'),
+ '$expireswhen' => t('Expires YYYY-MM-DD HH:MM')
+ ));
- $mails = array();
- $seen = 0;
- $unknown = false;
-
- foreach($messages as $message) {
-
- $s = theme_attachments($message);
-
- $mails[] = array(
- 'id' => $message['id'],
- 'from_name' => $message['from']['xchan_name'],
- 'from_url' => chanlink_hash($message['from_xchan']),
- 'from_photo' => $message['from']['xchan_photo_m'],
- 'to_name' => $message['to']['xchan_name'],
- 'to_url' => chanlink_hash($message['to_xchan']),
- 'to_photo' => $message['to']['xchan_photo_m'],
- 'subject' => $message['title'],
- 'body' => smilies(bbcode($message['body']) . $s),
- 'delete' => t('Delete message'),
- 'recall' => t('Recall message'),
- 'can_recall' => (($channel['channel_hash'] == $message['from_xchan']) ? true : false),
- 'is_recalled' => (intval($message['mail_recalled']) ? t('Message has been recalled.') : ''),
- 'date' => datetime_convert('UTC',date_default_timezone_get(),$message['created'],'D, d M Y - g:i A'),
- );
+ $mails = array();
+
+ $seen = 0;
+ $unknown = false;
+
+ foreach($messages as $message) {
+
+ $s = theme_attachments($message);
+
+ $mails[] = array(
+ 'id' => $message['id'],
+ 'from_name' => $message['from']['xchan_name'],
+ 'from_url' => chanlink_hash($message['from_xchan']),
+ 'from_photo' => $message['from']['xchan_photo_m'],
+ 'to_name' => $message['to']['xchan_name'],
+ 'to_url' => chanlink_hash($message['to_xchan']),
+ 'to_photo' => $message['to']['xchan_photo_m'],
+ 'subject' => $message['title'],
+ 'body' => smilies(bbcode($message['body']) . $s),
+ 'delete' => t('Delete message'),
+ 'recall' => t('Recall message'),
+ 'can_recall' => (($channel['channel_hash'] == $message['from_xchan']) ? true : false),
+ 'is_recalled' => (intval($message['mail_recalled']) ? t('Message has been recalled.') : ''),
+ 'date' => datetime_convert('UTC',date_default_timezone_get(),$message['created'],'D, d M Y - g:i A'),
+ );
- $seen = $message['seen'];
+ $seen = $message['seen'];
- }
+ }
- $recp = (($message['from_xchan'] === $channel['channel_hash']) ? 'to' : 'from');
+ $recp = (($message['from_xchan'] === $channel['channel_hash']) ? 'to' : 'from');
// FIXME - move this HTML to template
- $select = $message[$recp]['xchan_name'] . '<input type="hidden" name="messageto" value="' . $message[$recp]['xchan_hash'] . '" />';
- $parent = '<input type="hidden" name="replyto" value="' . $message['parent_mid'] . '" />';
-
- $tpl = get_markup_template('mail_display.tpl');
- $o = replace_macros($tpl, array(
- '$prvmsg_header' => t('Private Conversation'),
- '$thread_id' => $a->argv[1],
- '$thread_subject' => $message['title'],
- '$thread_seen' => $seen,
- '$delete' => t('Delete conversation'),
- '$canreply' => (($unknown) ? false : '1'),
- '$unknown_text' => t("No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."),
- '$mails' => $mails,
+ $select = $message[$recp]['xchan_name'] . '<input type="hidden" name="messageto" value="' . $message[$recp]['xchan_hash'] . '" />';
+ $parent = '<input type="hidden" name="replyto" value="' . $message['parent_mid'] . '" />';
+ $tpl = get_markup_template('mail_display.tpl');
+ $o = replace_macros($tpl, array(
+ '$prvmsg_header' => t('Subject:') . ' ' . $message['title'],
+ '$thread_id' => $mid,
+ '$thread_subject' => $message['title'],
+ '$thread_seen' => $seen,
+ '$delete' => t('Delete Conversation'),
+ '$canreply' => (($unknown) ? false : '1'),
+ '$unknown_text' => t("No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."),
+ '$mails' => $mails,
- // reply
- '$header' => t('Send Reply'),
- '$to' => t('To:'),
- '$showinputs' => '',
- '$subject' => t('Subject:'),
- '$subjtxt' => $message['title'],
- '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ',
- '$yourmessage' => t('Your message:'),
- '$text' => '',
- '$select' => $select,
- '$parent' => $parent,
- '$upload' => t('Upload photo'),
- '$attach' => t('Attach file'),
- '$insert' => t('Insert web link'),
- '$submit' => t('Submit'),
- '$wait' => t('Please wait'),
- '$defexpire' => '',
- '$feature_expire' => ((feature_enabled(local_channel(),'content_expire')) ? true : false),
- '$expires' => t('Set expiration date'),
- '$feature_encrypt' => ((feature_enabled(local_channel(),'content_encrypt')) ? true : false),
- '$encrypt' => t('Encrypt text'),
- '$cipher' => $cipher,
-
- ));
+ // reply
+ '$header' => t('Send Reply'),
+ '$to' => t('To:'),
+ '$showinputs' => '',
+ '$subject' => t('Subject:'),
+ '$subjtxt' => $message['title'],
+ '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ',
+ '$yourmessage' => t('Your message:'),
+ '$text' => '',
+ '$select' => $select,
+ '$parent' => $parent,
+ '$upload' => t('Upload photo'),
+ '$attach' => t('Attach file'),
+ '$insert' => t('Insert web link'),
+ '$submit' => t('Submit'),
+ '$wait' => t('Please wait'),
+ '$defexpire' => '',
+ '$feature_expire' => ((feature_enabled(local_channel(),'content_expire')) ? true : false),
+ '$expires' => t('Set expiration date'),
+ '$feature_encrypt' => ((feature_enabled(local_channel(),'content_encrypt')) ? true : false),
+ '$encrypt' => t('Encrypt text'),
+ '$cipher' => $cipher,
+ ));
- return $o;
- }
+ return $o;
}
diff --git a/mod/message.php b/mod/message.php
index 9f62f6b61..f8d71aa44 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -25,8 +25,6 @@ function message_content(&$a) {
$cipher = 'aes256';
-
-
if((argc() == 3) && (argv(1) === 'dropconv')) {
if(! intval(argv(2)))
return;
@@ -34,14 +32,31 @@ function message_content(&$a) {
$r = private_messages_drop(local_channel(), argv(2), true);
if($r)
info( t('Conversation removed.') . EOL );
- goaway($a->get_baseurl(true) . '/message' );
+ goaway($a->get_baseurl(true) . '/mail/combined' );
}
- if(argc() == 1) {
-
+/*
+ if(argc() == 2) {
+
+ switch(argv(1)) {
+ case 'combined':
+ $mailbox = 'combined';
+ $header = t('Conversations');
+ break;
+ case 'inbox':
+ $mailbox = 'inbox';
+ $header = t('Received Messages');
+ break;
+ case 'outbox':
+ $mailbox = 'outbox';
+ $header = t('Sent Messages');
+ break;
+ default:
+ break;
+ }
// private_messages_list() can do other more complicated stuff, for now keep it simple
- $r = private_messages_list(local_channel(), '', $a->pager['start'], $a->pager['itemspage']);
+ $r = private_messages_list(local_channel(), $mailbox, $a->pager['start'], $a->pager['itemspage']);
if(! $r) {
info( t('No messages.') . EOL);
@@ -51,6 +66,7 @@ function message_content(&$a) {
$messages = array();
foreach($r as $rr) {
+
$messages[] = array(
'id' => $rr['id'],
'from_name' => $rr['from']['xchan_name'],
@@ -70,14 +86,19 @@ function message_content(&$a) {
$tpl = get_markup_template('mail_head.tpl');
$o = replace_macros($tpl, array(
- '$header' => t('Messages'),
+ '$header' => $header,
'$messages' => $messages
));
$o .= alt_pager($a,count($r));
+
return $o;
- }
+ return;
+
+ }
+*/
+ return;
}
diff --git a/view/css/widgets.css b/view/css/widgets.css
index c1b80dabb..516e59e6f 100644
--- a/view/css/widgets.css
+++ b/view/css/widgets.css
@@ -122,3 +122,4 @@ li:hover .group-edit-icon {
#tasklist-new-summary {
width: 250px;
}
+
diff --git a/view/js/mod_mail.js b/view/js/mod_mail.js
index 16e06e6f5..704d0a460 100644
--- a/view/js/mod_mail.js
+++ b/view/js/mod_mail.js
@@ -2,5 +2,4 @@ $(document).ready(function() {
$("#recip").contact_autocomplete(baseurl + '/acl', '', false, function(data) {
$("#recip-complete").val(data.xid);
});
-
});
diff --git a/view/pdl/mod_mail.pdl b/view/pdl/mod_mail.pdl
index d8f50ad7a..67632619e 100644
--- a/view/pdl/mod_mail.pdl
+++ b/view/pdl/mod_mail.pdl
@@ -1,3 +1,4 @@
[region=aside]
-[widget=vcard][/widget]
+[widget=mailmenu][/widget]
+[widget=conversations][/widget]
[/region]
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index f75808eb7..efb5b39ba 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -1305,6 +1305,10 @@ a.rconnect:hover, a.rateme:hover, div.rateme:hover {
padding: 0;
}
+.widget .conv-participants {
+ color: $font_colour;
+}
+
.notif-item a {
color: #000;
}
diff --git a/view/tpl/mail_display.tpl b/view/tpl/mail_display.tpl
index 062710f1d..bb89c96ec 100755
--- a/view/tpl/mail_display.tpl
+++ b/view/tpl/mail_display.tpl
@@ -1,6 +1,8 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
+ <a class="btn btn-xs btn-danger pull-right" href="message/dropconv/{{$thread_id}}" onclick="return confirmDelete();"><i class="icon-trash"></i> {{$delete}}</a>
<h2>{{$prvmsg_header}}</h2>
+
</div>
<div class="section-content-wrapper">
{{foreach $mails as $mail}}
diff --git a/view/tpl/mail_head.tpl b/view/tpl/mail_head.tpl
index 7bc854fff..d52fa40e0 100755
--- a/view/tpl/mail_head.tpl
+++ b/view/tpl/mail_head.tpl
@@ -1,10 +1,8 @@
-<div class="generic-content-wrapper">
- <div class="section-title-wrapper">
- <h2>{{$header}}</h2>
- </div>
- <div class="section-content-wrapper">
- {{foreach $messages as $message}}
- {{include file="mail_list.tpl"}}
- {{/foreach}}
- </div>
+<div class="widget">
+ <h3>{{$header}}</h3>
+ <ul class="nav nav-pills nav-stacked">
+ {{foreach $messages as $message}}
+ {{include file="mail_list.tpl"}}
+ {{/foreach}}
+ </ul>
</div>
diff --git a/view/tpl/mail_list.tpl b/view/tpl/mail_list.tpl
index e3f8ef75c..ad042eb59 100755
--- a/view/tpl/mail_list.tpl
+++ b/view/tpl/mail_list.tpl
@@ -1,6 +1,7 @@
-<a href="{{$message.from_url}}" class ="mail-list" ><img class="mail-list-sender-photo" src="{{$message.from_photo}}" alt="{{$message.from_name}}" /></a>
-<span class="mail-list">{{$message.from_name}}</span>
-<span class="mail-list {{if $message.seen}}seen{{else}}unseen{{/if}}"><a href="mail/{{$message.id}}" class="mail-link">{{$message.subject}}</a></span>
-<span class="mail-list" title="{{$message.date}}">{{$message.date}}</span>
-<span class="mail-list mail-list-remove" class="btn btn-default btn-sm"><a href="message/dropconv/{{$message.id}}" onclick="return confirmDelete();" title="{{$message.delete}}" class="btn btn-default btn-sm" ><i class="icon-trash mail-icons drop-icons"></i></a></span>
-<div class="clear"></div>
+<li>
+ <a href="mail/{{$message.id}}" class="mail-link">
+ <span class="{{if $message.seen}}seen{{else}}unseen{{/if}}">{{$message.subject}}</span><br>
+ <span class="conv-participants">{{$message.from_name}} > {{$message.to_name}}</span><br>
+ <span class="wall-item-ago autotime" title="{{$message.date}}">{{$message.date}}</span>
+ </a>
+</li>
diff --git a/view/tpl/message_side.tpl b/view/tpl/message_side.tpl
index 3e32eae14..954ada215 100755
--- a/view/tpl/message_side.tpl
+++ b/view/tpl/message_side.tpl
@@ -1,13 +1,18 @@
<div class="widget">
<h3>{{$title}}</h3>
<ul class="nav nav-pills nav-stacked">
- <li><a href="{{$check.url}}"{{if $check.sel}} class="checkmessage-selected"{{/if}}>{{$check.label}}</a></li>
- <li><a href="{{$new.url}}"{{if $new.sel}} class="newmessage-selected"{{/if}}>{{$new.label}}</a></li>
+ <li><a href="{{$check.url}}"{{if $check.sel}} class="active"{{/if}}>{{$check.label}}</a></li>
+ {{*
+ <li><a href="{{$combined.url}}"{{if $combined.sel}} class="active"{{/if}}>{{$combined.label}}</a></li>
+ <li><a href="{{$inbox.url}}"{{if $inbox.sel}} class="active"{{/if}}>{{$inbox.label}}</a></li>
+ <li><a href="{{$outbox.url}}"{{if $outbox.sel}} class="active"{{/if}}>{{$outbox.label}}</a></li>
+ *}}
+ <li><a href="{{$new.url}}"{{if $new.sel}} class="active"{{/if}}>{{$new.label}}</a></li>
</ul>
{{if $tabs}}
<ul class="nav nav-pills nav-stacked">
{{foreach $tabs as $t}}
- <li><a href="{{$t.url}}"{{if $t.sel}} class="message-selected"{{/if}}>{{$t.label}}</a></li>
+ <li><a href="{{$t.url}}"{{if $t.sel}} class="active"{{/if}}>{{$t.label}}</a></li>
{{/foreach}}
</ul>
{{/if}}