From 04b164c342bebc8b5973b28fb25ea512161aa0b1 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 20:07:31 +0100 Subject: A section sub-class for profiles --- lib/profilesection.php | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 lib/profilesection.php (limited to 'lib/profilesection.php') diff --git a/lib/profilesection.php b/lib/profilesection.php new file mode 100644 index 000000000..087adb2ef --- /dev/null +++ b/lib/profilesection.php @@ -0,0 +1,97 @@ +. + * + * @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); +} + +define('PROFILES_PER_SECTION', 6); + +/** + * Base class for sections + * + * These are the widgets that show interesting data about a person + * group, or site. + * + * @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 ProfileSection extends Section +{ + function showContent() + { + $profiles = $this->getProfiles(); + + $cnt = 0; + + $this->out->elementStart('ul', 'entities users xoxo'); + + while ($profiles->fetch() && ++$cnt <= PROFILES_PER_SECTION) { + $this->showProfile($profiles); + } + + $this->out->elementEnd('ul'); + + return ($cnt > PROFILES_PER_SECTION); + } + + function getProfiles() + { + return null; + } + + function showProfile($profile) + { + $this->out->elementStart('li', '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('a'); + if ($profile->value) { + $this->out->element('span', 'value', $profile->value); + } + $this->out->elementEnd('li'); + } +} -- cgit v1.2.3-54-g00ecf From 0029ebad111fd929936698d843556701df0f348c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 Jan 2009 19:54:35 +0000 Subject: Don't tryto show a section if nothing comes back from profiles --- lib/profilesection.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lib/profilesection.php') diff --git a/lib/profilesection.php b/lib/profilesection.php index 087adb2ef..14068b082 100644 --- a/lib/profilesection.php +++ b/lib/profilesection.php @@ -52,6 +52,10 @@ class ProfileSection extends Section { $profiles = $this->getProfiles(); + if (!$profiles) { + return false; + } + $cnt = 0; $this->out->elementStart('ul', 'entities users xoxo'); -- cgit v1.2.3-54-g00ecf From 9bab9ae078cab16cb2e19bf3272d4d5157e14264 Mon Sep 17 00:00:00 2001 From: sarven Date: Thu, 22 Jan 2009 20:39:13 +0000 Subject: Top posters section markup and stye --- lib/profilesection.php | 8 ++++---- lib/topposterssection.php | 11 ++++++++--- theme/base/css/display.css | 15 +++++++-------- 3 files changed, 19 insertions(+), 15 deletions(-) (limited to 'lib/profilesection.php') diff --git a/lib/profilesection.php b/lib/profilesection.php index 14068b082..91a3dfa34 100644 --- a/lib/profilesection.php +++ b/lib/profilesection.php @@ -58,13 +58,13 @@ class ProfileSection extends Section $cnt = 0; - $this->out->elementStart('ul', 'entities users xoxo'); - + $this->out->elementStart('table'); + $this->out->elementStart('tbody'); while ($profiles->fetch() && ++$cnt <= PROFILES_PER_SECTION) { $this->showProfile($profiles); } - - $this->out->elementEnd('ul'); + $this->out->elementEnd('tbody'); + $this->out->elementEnd('table'); return ($cnt > PROFILES_PER_SECTION); } diff --git a/lib/topposterssection.php b/lib/topposterssection.php index 7a3d46aa5..4701ca83f 100644 --- a/lib/topposterssection.php +++ b/lib/topposterssection.php @@ -71,7 +71,9 @@ class TopPostersSection extends ProfileSection 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, @@ -87,11 +89,14 @@ class TopPostersSection extends ProfileSection $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'); } function title() diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 44dbff5da..c55b3fd23 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -1057,28 +1057,27 @@ background-color:#fff; /*END: LOAD ALONG WITH JS*/ /* TOP_POSTERS */ -#top-posters caption { +#top_posters caption { text-align:left; text-transform:uppercase; } -#top-posters thead { +#top_posters thead { display:none; } -#top-poster_user { +#top_poster_user { width:199px; } -#top-poster_number-of-notices { +#top_poster_number-of-notices { width:123px; } -#top-posters tbody td { +#top_posters tbody td { padding-right:11px; padding-bottom:4px; } -#top-posters img { +#top_posters img { margin-right:7px; -height:24px; -width:24px; +margin-bottom:0; } /* tagcloud */ -- 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/profilesection.php') 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