. * * @category Widget * @package StatusNet * @author Evan Prodromou * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); } /** * Base class for sections * * These are the widgets that show interesting data about a person * group, or site. * * @category Widget * @package StatusNet * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ abstract class Section extends Widget { /** * Show the form * * Uses a recipe to output the form. * * @return void * @see Widget::show() */ function show() { $this->out->elementStart('div', array('id' => $this->divId(), 'class' => 'section')); $this->showTitle(); $have_more = $this->showContent(); if ($have_more) { $this->showMore(); } $this->out->elementEnd('div'); } function showTitle() { $link = $this->link(); if (!empty($link)) { $this->out->elementStart('h2'); $this->out->element('a', array('href' => $link), $this->title()); $this->out->elementEnd('h2'); } else { $this->out->element('h2', null, $this->title()); } } function showMore() { $this->out->elementStart('p'); $this->out->element('a', array('href' => $this->moreUrl(), 'class' => 'more'), $this->moreTitle()); $this->out->elementEnd('p'); } abstract public function divId(); function title() { // TRANS: Default title for section/sidebar widget. return _('Untitled section'); } function link() { return null; } function showContent() { $this->out->element('p', null, // TRANS: Default content for section/sidebar widget. _('(None)')); return false; } function moreUrl() { return null; } function moreTitle() { // TRANS: Default "More..." title for section/sidebar widget. return _('More...'); } }