From 785ffd5b9b70ea1614ba66b3c7b195f39027eeb6 Mon Sep 17 00:00:00 2001 From: sarven Date: Thu, 22 Jan 2009 21:03:59 +0000 Subject: Populat notices and some css cleanup --- lib/noticesection.php | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'lib') diff --git a/lib/noticesection.php b/lib/noticesection.php index 9d1079070..7dfa0472d 100644 --- a/lib/noticesection.php +++ b/lib/noticesection.php @@ -54,13 +54,13 @@ class NoticeSection extends Section $cnt = 0; - $this->out->elementStart('table', 'notices'); + $this->out->elementStart('ul', 'notices'); while ($notices->fetch() && ++$cnt <= NOTICES_PER_SECTION) { $this->showNotice($notices); } - $this->out->elementEnd('table'); + $this->out->elementEnd('ul'); return ($cnt > NOTICES_PER_SECTION); } @@ -73,9 +73,15 @@ class NoticeSection extends Section function showNotice($notice) { $profile = $notice->getProfile(); - $this->out->elementStart('tr'); - $this->out->elementStart('td'); + $this->out->elementStart('li', 'hentry notice'); + $this->out->elementStart('div', 'entry-title'); $avatar = $profile->getAvatar(AVATAR_MINI_SIZE); + $this->out->elementStart('span', 'vcard author'); + $this->out->elementStart('a', array('title' => ($profile->fullname) ? + $profile->fullname : + $profile->nickname, + 'href' => $profile->noticeurl, + 'class' => 'url')); $this->out->element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)), 'width' => AVATAR_MINI_SIZE, 'height' => AVATAR_MINI_SIZE, @@ -83,25 +89,19 @@ class NoticeSection extends Section 'alt' => ($profile->fullname) ? $profile->fullname : $profile->nickname)); - $this->out->elementEnd('a'); - $this->out->elementEnd('td'); - $this->out->elementStart('td'); - $this->out->elementStart('a', array('title' => ($profile->fullname) ? - $profile->fullname : - $profile->nickname, - 'href' => $profile->noticeurl, - 'rel' => 'contact member', - 'class' => 'url')); $this->out->element('span', 'fn nickname', $profile->nickname); - $this->out->elementEnd('td'); - $this->out->elementStart('td'); + $this->out->elementEnd('a'); + $this->out->elementEnd('span'); + + $this->out->elementStart('p', 'entry-content'); $this->out->raw($notice->rendered); - $this->out->elementEnd('td'); + $this->out->elementEnd('p'); if ($notice->value) { - $this->out->elementStart('td'); + $this->out->elementStart('p'); $this->out->text($notice->value); - $this->out->elementEnd('td'); + $this->out->elementEnd('p'); } - $this->out->elementEnd('tr'); + $this->out->elementEnd('div'); + $this->out->elementEnd('li'); } } -- cgit v1.2.3-54-g00ecf From f6f71ea0ee8b8efb288f9abdf62b7850a18fe7cd Mon Sep 17 00:00:00 2001 From: sarven Date: Thu, 22 Jan 2009 21:07:11 +0000 Subject: Minor --- lib/topposterssection.php | 4 ++-- theme/base/css/display.css | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/topposterssection.php b/lib/topposterssection.php index 4701ca83f..786973093 100644 --- a/lib/topposterssection.php +++ b/lib/topposterssection.php @@ -73,7 +73,7 @@ class TopPostersSection extends ProfileSection { $this->out->elementStart('tr'); $this->out->elementStart('td'); - $this->out->elementStart('span', 'vcard'); + $this->out->elementStart('span', 'vcard'); $this->out->elementStart('a', array('title' => ($profile->fullname) ? $profile->fullname : $profile->nickname, @@ -89,7 +89,7 @@ class TopPostersSection extends ProfileSection $profile->fullname : $profile->nickname)); $this->out->element('span', 'fn nickname', $profile->nickname); - $this->out->elementEnd('span'); + $this->out->elementEnd('span'); $this->out->elementEnd('a'); $this->out->elementEnd('td'); if ($profile->value) { diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 2208529c0..5d2a0d3c4 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -716,7 +716,8 @@ float:left; width:644px; width:96.699%; width:100%; -border-top:1px dashed #D1D9E4; +border-top-width:1px; +border-top-style:dashed; /*-moz-border-radius:7px;*/ } .notices li { @@ -1086,7 +1087,8 @@ padding-bottom:11px; } -.section .notice:first { +.section .notice:first-child { +padding-top:0; border-top:0; } -- cgit v1.2.3-54-g00ecf From 7cd275b982cc1e0255197b623bc54f86e1ba0d1e Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 21:14:01 +0000 Subject: A tag cloud section for groups --- lib/grouptagcloudsection.php | 87 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 lib/grouptagcloudsection.php (limited to 'lib') diff --git a/lib/grouptagcloudsection.php b/lib/grouptagcloudsection.php new file mode 100644 index 000000000..f05be85cb --- /dev/null +++ b/lib/grouptagcloudsection.php @@ -0,0 +1,87 @@ +. + * + * @category Widget + * @package Laconica + * @author Evan Prodromou + * @copyright 2009 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +if (!defined('LACONICA')) { + exit(1); +} + +/** + * Personal tag cloud section + * + * @category Widget + * @package Laconica + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +class GroupTagCloudSection extends TagCloudSection +{ + var $group = null; + + function __construct($out=null, $group=null) + { + parent::__construct($out); + $this->group = $group; + } + + function title() + { + return sprintf(_('Tags in %s group\'s notices'), $this->group->nickname); + } + + function getTags() + { + $qry = 'SELECT notice_tag.tag, '. + 'sum(exp(-(now() - notice_tag.created)/%s)) as weight ' . + 'FROM notice_tag JOIN notice ' . + 'ON notice_tag.notice_id = notice.id ' . + 'JOIN group_inbox on group_inbox.notice_id = notice.id ' . + 'WHERE group_inbox.group_id = %d ' . + 'GROUP BY notice_tag.tag ' . + 'ORDER BY weight DESC '; + + $limit = TAGS_PER_SECTION; + $offset = 0; + + if (common_config('db','type') == 'pgsql') { + $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; + } else { + $qry .= ' LIMIT ' . $offset . ', ' . $limit; + } + + $tag = Memcached_DataObject::cachedQuery('Notice_tag', + sprintf($qry, + common_config('tag', 'dropoff'), + $this->group->id), + 3600); + return $tag; + } + +} -- cgit v1.2.3-54-g00ecf From 8112c04c3de2463cb8bfa0b36c469b11421bb1f5 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 21:14:24 +0000 Subject: Show (None) on no tag cloud results --- lib/tagcloudsection.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/tagcloudsection.php b/lib/tagcloudsection.php index 121dfc499..1a7f721b2 100644 --- a/lib/tagcloudsection.php +++ b/lib/tagcloudsection.php @@ -53,6 +53,7 @@ class TagCloudSection extends Section $tags = $this->getTags(); if (!$tags) { + $this->out->element('p', null, _('None')); return false; } @@ -66,6 +67,11 @@ class TagCloudSection extends Section $sum += $tags->weight; } + if ($cnt == 0) { + $this->out->element('p', null, _('(None)')); + return false; + } + ksort($tw); $this->out->elementStart('ul', 'tags xoxo tag-cloud'); -- cgit v1.2.3-54-g00ecf From 56b6164fa4bde1bbeb8e83bfa2870944d6de5900 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 21:41:52 +0000 Subject: Move table-based profile section layout from topposter to base class --- lib/profilesection.php | 11 ++++++++--- lib/topposterssection.php | 30 ------------------------------ 2 files changed, 8 insertions(+), 33 deletions(-) (limited to 'lib') diff --git a/lib/profilesection.php b/lib/profilesection.php index 91a3dfa34..3642ae164 100644 --- a/lib/profilesection.php +++ b/lib/profilesection.php @@ -76,7 +76,9 @@ class ProfileSection extends Section function showProfile($profile) { - $this->out->elementStart('li', 'vcard'); + $this->out->elementStart('tr'); + $this->out->elementStart('td'); + $this->out->elementStart('span', 'vcard'); $this->out->elementStart('a', array('title' => ($profile->fullname) ? $profile->fullname : $profile->nickname, @@ -92,10 +94,13 @@ class ProfileSection extends Section $profile->fullname : $profile->nickname)); $this->out->element('span', 'fn nickname', $profile->nickname); + $this->out->elementEnd('span'); $this->out->elementEnd('a'); + $this->out->elementEnd('td'); if ($profile->value) { - $this->out->element('span', 'value', $profile->value); + $this->out->element('td', 'value', $profile->value); } - $this->out->elementEnd('li'); + + $this->out->elementEnd('tr'); } } diff --git a/lib/topposterssection.php b/lib/topposterssection.php index 786973093..4bd59ac79 100644 --- a/lib/topposterssection.php +++ b/lib/topposterssection.php @@ -69,36 +69,6 @@ class TopPostersSection extends ProfileSection return $profile; } - function showProfile($profile) - { - $this->out->elementStart('tr'); - $this->out->elementStart('td'); - $this->out->elementStart('span', 'vcard'); - $this->out->elementStart('a', array('title' => ($profile->fullname) ? - $profile->fullname : - $profile->nickname, - 'href' => $profile->profileurl, - 'rel' => 'contact member', - 'class' => 'url')); - $avatar = $profile->getAvatar(AVATAR_MINI_SIZE); - $this->out->element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)), - 'width' => AVATAR_MINI_SIZE, - 'height' => AVATAR_MINI_SIZE, - 'class' => 'avatar photo', - 'alt' => ($profile->fullname) ? - $profile->fullname : - $profile->nickname)); - $this->out->element('span', 'fn nickname', $profile->nickname); - $this->out->elementEnd('span'); - $this->out->elementEnd('a'); - $this->out->elementEnd('td'); - if ($profile->value) { - $this->out->element('td', 'value', $profile->value); - } - - $this->out->elementEnd('tr'); - } - function title() { return _('Top posters'); -- cgit v1.2.3-54-g00ecf From cb3d94ea93217c5e284d59097f1ea3441f01471f Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 21:42:18 +0000 Subject: Add a featured user section --- lib/featureduserssection.php | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 lib/featureduserssection.php (limited to 'lib') diff --git a/lib/featureduserssection.php b/lib/featureduserssection.php new file mode 100644 index 000000000..2935d8363 --- /dev/null +++ b/lib/featureduserssection.php @@ -0,0 +1,89 @@ +. + * + * @category Widget + * @package Laconica + * @author Evan Prodromou + * @copyright 2009 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +if (!defined('LACONICA')) { + exit(1); +} + +/** + * Section for featured users + * + * @category Widget + * @package Laconica + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +class FeaturedUsersSection extends ProfileSection +{ + function getProfiles() + { + $featured_nicks = common_config('nickname', 'featured'); + + if (!$featured_nicks) { + return null; + } + + $quoted = array(); + + foreach ($featured_nicks as $nick) { + $quoted[] = "'$nick'"; + } + + $qry = 'SELECT profile.* ' . + 'FROM profile JOIN user on profile.id = user.id ' . + 'WHERE user.nickname in (' . implode(',', $quoted) . ') ' . + 'ORDER BY profile.created DESC '; + + $limit = PROFILES_PER_SECTION + 1; + $offset = 0; + + if (common_config('db','type') == 'pgsql') { + $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; + } else { + $qry .= ' LIMIT ' . $offset . ', ' . $limit; + } + + $profile = Memcached_DataObject::cachedQuery('Profile', + $qry, + 6 * 3600); + return $profile; + } + + function title() + { + return _('Featured users'); + } + + function divId() + { + return 'featured_users'; + } +} -- cgit v1.2.3-54-g00ecf From 251551fee68f8941b5f64ea4afbe34d13b09a77d Mon Sep 17 00:00:00 2001 From: sarven Date: Thu, 22 Jan 2009 21:47:33 +0000 Subject: Group top post section and styles --- lib/groupsection.php | 14 +++++++++----- theme/base/css/display.css | 4 ++++ theme/identica/css/display.css | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/groupsection.php b/lib/groupsection.php index bf26ab48c..c19299493 100644 --- a/lib/groupsection.php +++ b/lib/groupsection.php @@ -58,13 +58,13 @@ class GroupSection extends Section $cnt = 0; - $this->out->elementStart('ul', 'entities group xoxo'); + $this->out->elementStart('table'); while ($profiles->fetch() && ++$cnt <= GROUPS_PER_SECTION) { $this->showGroup($profiles); } - $this->out->elementEnd('ul'); + $this->out->elementEnd('table'); return ($cnt > GROUPS_PER_SECTION); } @@ -76,7 +76,9 @@ class GroupSection extends Section function showGroup($group) { - $this->out->elementStart('li', 'vcard'); + $this->out->elementStart('tr'); + $this->out->elementStart('td'); + $this->out->elementStart('span', 'vcard'); $this->out->elementStart('a', array('title' => ($group->fullname) ? $group->fullname : $group->nickname, @@ -95,9 +97,11 @@ class GroupSection extends Section $group->nickname)); $this->out->element('span', 'fn org nickname', $group->nickname); $this->out->elementEnd('a'); + $this->out->elementEnd('span'); + $this->out->elementEnd('td'); if ($group->value) { - $this->out->element('span', 'value', $group->value); + $this->out->element('td', 'value', $group->value); } - $this->out->elementEnd('li'); + $this->out->elementEnd('tr'); } } diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 5d2a0d3c4..3f34ee7b2 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -841,6 +841,10 @@ display:inline; .notice div.entry-content .timestamp { margin-left:59px; } +#showstream .notice div.entry-content .timestamp { +margin-left:0; +} + .notice div.entry-content .timestamp dt, .notice div.entry-content .response dt { diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index c10f46fe9..dd623b217 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -226,7 +226,7 @@ background:transparent url(../images/icons/twotone/green/trash.gif) no-repeat 0 .notices div.entry-content, .notices div.notice-options { -opacity:0.3; +opacity:0.4; } .notices li.hover div.entry-content, .notices li.hover div.notice-options { -- cgit v1.2.3-54-g00ecf From d6879bfe0c188b06f7b7730bb64af469d5c6e461 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 22:38:10 +0000 Subject: Debug some of the subscriptions+tags problems --- actions/subscribers.php | 6 +++++- actions/subscriptions.php | 6 +++++- classes/User.php | 54 +++++++++++++++++++++++++++++++++++++++++++++++ lib/galleryaction.php | 7 ++++-- lib/profilelist.php | 4 ++-- 5 files changed, 71 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/actions/subscribers.php b/actions/subscribers.php index 408829b54..be9df2b12 100644 --- a/actions/subscribers.php +++ b/actions/subscribers.php @@ -75,7 +75,11 @@ class SubscribersAction extends GalleryAction $offset = ($this->page-1) * PROFILES_PER_PAGE; $limit = PROFILES_PER_PAGE + 1; - $subscribers = $this->user->getSubscribers($offset, $limit); + if ($this->tag) { + $subscribers = $this->user->getTaggedSubscribers($this->tag, $offset, $limit); + } else { + $subscribers = $this->user->getSubscribers($offset, $limit); + } if ($subscribers) { $subscribers_list = new SubscribersList($subscribers, $this->user, $this); diff --git a/actions/subscriptions.php b/actions/subscriptions.php index bcc557891..d7ba0d624 100644 --- a/actions/subscriptions.php +++ b/actions/subscriptions.php @@ -84,7 +84,11 @@ class SubscriptionsAction extends GalleryAction $offset = ($this->page-1) * PROFILES_PER_PAGE; $limit = PROFILES_PER_PAGE + 1; - $subscriptions = $this->user->getSubscriptions($offset, $limit); + if ($this->tag) { + $subscriptions = $this->user->getTaggedSubscriptions($this->tag, $offset, $limit); + } else { + $subscriptions = $this->user->getSubscriptions($offset, $limit); + } if ($subscriptions) { $subscriptions_list = new SubscriptionsList($subscriptions, $this->user, $this); diff --git a/classes/User.php b/classes/User.php index 5dadd6b44..5f4fb9b6f 100644 --- a/classes/User.php +++ b/classes/User.php @@ -575,4 +575,58 @@ class User extends Memcached_DataObject return $profile; } + + function getTaggedSubscribers($tag, $offset=0, $limit=null) + { + $qry = + 'SELECT profile.* ' . + 'FROM profile JOIN subscription ' . + 'ON profile.id = subscription.subscriber ' . + 'JOIN profile_tag ON (profile_tag.tagged = subscription.subscriber ' . + 'AND profile_tag.tagger = subscription.subscribed) ' . + 'WHERE subscription.subscribed = %d ' . + 'AND profile_tag.tag = "%s" ' . + 'AND subscription.subscribed != subscription.subscriber ' . + 'ORDER BY subscription.created DESC '; + + if ($offset) { + if (common_config('db','type') == 'pgsql') { + $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; + } else { + $qry .= ' LIMIT ' . $offset . ', ' . $limit; + } + } + + $profile = new Profile(); + + $cnt = $profile->query(sprintf($qry, $this->id, $tag)); + + return $profile; + } + + function getTaggedSubscriptions($tag, $offset=0, $limit=null) + { + $qry = + 'SELECT profile.* ' . + 'FROM profile JOIN subscription ' . + 'ON profile.id = subscription.subscribed ' . + 'JOIN profile_tag on (profile_tag.tagged = subscription.subscribed ' . + 'AND profile_tag.tagger = subscription.subscriber) ' . + 'WHERE subscription.subscriber = %d ' . + 'AND profile_tag.tag = "%s" ' . + 'AND subscription.subscribed != subscription.subscriber ' . + 'ORDER BY subscription.created DESC '; + + if (common_config('db','type') == 'pgsql') { + $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; + } else { + $qry .= ' LIMIT ' . $offset . ', ' . $limit; + } + + $profile = new Profile(); + + $profile->query(sprintf($qry, $this->id, $tag)); + + return $profile; + } } diff --git a/lib/galleryaction.php b/lib/galleryaction.php index a277762a6..25a5e3fd5 100644 --- a/lib/galleryaction.php +++ b/lib/galleryaction.php @@ -32,6 +32,7 @@ class GalleryAction extends Action var $profile = null; var $user = null; var $page = null; + var $tag = null; function prepare($args) { @@ -69,6 +70,8 @@ class GalleryAction extends Action $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; + $this->tag = $this->trimmed('tag'); + return true; } @@ -84,7 +87,7 @@ class GalleryAction extends Action # Post from the tag dropdown; redirect to a GET if ($_SERVER['REQUEST_METHOD'] == 'POST') { - common_redirect($this->self_url(), 307); + common_redirect($this->selfUrl(), 307); return; } @@ -124,7 +127,7 @@ class GalleryAction extends Action array('href' => common_local_url($this->trimmed('action'), array('nickname' => - $profile->nickname))), + $this->user->nickname))), _('All')); $this->elementEnd('li'); $this->elementStart('li', array('id'=>'filter_tags_item')); diff --git a/lib/profilelist.php b/lib/profilelist.php index a510c518c..499d74f7b 100644 --- a/lib/profilelist.php +++ b/lib/profilelist.php @@ -169,9 +169,9 @@ class ProfileList extends Widget $this->out->elementStart('ul', 'tags xoxo'); foreach ($tags as $tag) { $this->out->elementStart('li'); - $this->element('span', 'mark_hash', '#'); + $this->out->element('span', 'mark_hash', '#'); $this->out->element('a', array('rel' => 'tag', - 'href' => common_local_url($this->action, + 'href' => common_local_url($this->action->trimmed('action'), array('nickname' => $this->owner->nickname, 'tag' => $tag))), $tag); -- cgit v1.2.3-54-g00ecf From 2935e8c7ce3a9a31b9191d4a02cb8cab348c68e6 Mon Sep 17 00:00:00 2001 From: sarven Date: Fri, 23 Jan 2009 00:20:05 +0000 Subject: Minor markup fix --- actions/showgroup.php | 4 +++- lib/tagcloudsection.php | 5 +++++ theme/base/css/display.css | 15 ++------------- 3 files changed, 10 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/actions/showgroup.php b/actions/showgroup.php index 6e2f939f9..8d8fbe6be 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -351,7 +351,7 @@ class ShowgroupAction extends Action return; } - $this->elementStart('div', array('id' => 'entity_subscriptions', + $this->elementStart('div', array('id' => 'entity_members', 'class' => 'section')); $this->element('h2', null, _('Members')); @@ -369,5 +369,7 @@ class ShowgroupAction extends Action array('nickname' => $this->group->nickname))), _('All members')); } + + $this->elementEnd('div'); } } diff --git a/lib/tagcloudsection.php b/lib/tagcloudsection.php index 1a7f721b2..178dd88ca 100644 --- a/lib/tagcloudsection.php +++ b/lib/tagcloudsection.php @@ -116,4 +116,9 @@ class TagCloudSection extends Section { return common_local_url('tag', array('tag' => $tag)); } + + function divId() + { + return 'tagcloud'; + } } diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 596ce42f4..46bce79ed 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -812,11 +812,11 @@ border-radius:4px; } .notice div.entry-content { -/*border:1px solid blue;*/ clear:left; float:left; -/*width:48%;*/ font-size:0.95em; +margin-left:59px; +width:70%; } .notice div.entry-content a, .notice .notice-options a, @@ -829,22 +829,11 @@ float:left; font-size:1.025em; } -#laconicat .notice div.entry-content { -/*margin-left:0;*/ -} - .notice div.entry-content dl, .notice div.entry-content dt, .notice div.entry-content dd { display:inline; } -.notice div.entry-content .timestamp { -margin-left:59px; -} -#showstream .notice div.entry-content .timestamp { -margin-left:0; -} - .notice div.entry-content .timestamp dt, .notice div.entry-content .response dt { -- cgit v1.2.3-54-g00ecf