diff --git a/framework/yii/widgets/LinkPager.php b/framework/yii/widgets/LinkPager.php
index 62d99f6..f3af72f 100644
--- a/framework/yii/widgets/LinkPager.php
+++ b/framework/yii/widgets/LinkPager.php
@@ -87,9 +87,9 @@ class LinkPager extends Widget
public $lastPageLabel;
/**
* @var string the template used to render the content within the pager container.
- * The token "{buttons}" will be replaced with the actual page buttons.
+ * The token "{pages}" will be replaced with the actual page buttons.
*/
- public $template = '{buttons}';
+ public $template;
/**
@@ -100,6 +100,9 @@ class LinkPager extends Widget
if ($this->pagination === null) {
throw new InvalidConfigException('The "pagination" property must be set.');
}
+ if ($this->template === null) {
+ $this->template = ' {pages}';
+ }
}
/**
@@ -109,16 +112,16 @@ class LinkPager extends Widget
public function run()
{
$buttons = strtr($this->template, array(
- '{buttons}' => Html::tag('ul', implode("\n", $this->createPageButtons())),
+ '{pages}' => $this->renderPageButtons(),
));
echo Html::tag('div', $buttons, $this->options);
}
/**
- * Creates the page buttons.
- * @return array a list of page buttons (in HTML code).
+ * Renders the page buttons.
+ * @return string the rendering result
*/
- protected function createPageButtons()
+ protected function renderPageButtons()
{
$buttons = array();
@@ -127,7 +130,7 @@ class LinkPager extends Widget
// first page
if ($this->firstPageLabel !== null) {
- $buttons[] = $this->createPageButton($this->firstPageLabel, 0, $this->firstPageCssClass, $currentPage <= 0, false);
+ $buttons[] = $this->renderPageButton($this->firstPageLabel, 0, $this->firstPageCssClass, $currentPage <= 0, false);
}
// prev page
@@ -135,13 +138,13 @@ class LinkPager extends Widget
if (($page = $currentPage - 1) < 0) {
$page = 0;
}
- $buttons[] = $this->createPageButton($this->prevPageLabel, $page, $this->prevPageCssClass, $currentPage <= 0, false);
+ $buttons[] = $this->renderPageButton($this->prevPageLabel, $page, $this->prevPageCssClass, $currentPage <= 0, false);
}
// internal pages
list($beginPage, $endPage) = $this->getPageRange();
for ($i = $beginPage; $i <= $endPage; ++$i) {
- $buttons[] = $this->createPageButton($i + 1, $i, null, false, $i == $currentPage);
+ $buttons[] = $this->renderPageButton($i + 1, $i, null, false, $i == $currentPage);
}
// next page
@@ -149,28 +152,28 @@ class LinkPager extends Widget
if (($page = $currentPage + 1) >= $pageCount - 1) {
$page = $pageCount - 1;
}
- $buttons[] = $this->createPageButton($this->nextPageLabel, $page, $this->nextPageCssClass, $currentPage >= $pageCount - 1, false);
+ $buttons[] = $this->renderPageButton($this->nextPageLabel, $page, $this->nextPageCssClass, $currentPage >= $pageCount - 1, false);
}
// last page
if ($this->lastPageLabel !== null) {
- $buttons[] = $this->createPageButton($this->lastPageLabel, $pageCount - 1, $this->lastPageCssClass, $currentPage >= $pageCount - 1, false);
+ $buttons[] = $this->renderPageButton($this->lastPageLabel, $pageCount - 1, $this->lastPageCssClass, $currentPage >= $pageCount - 1, false);
}
- return $buttons;
+ return Html::tag('ul', implode("\n", $buttons));
}
/**
- * Creates a page button.
+ * Renders a page button.
* You may override this method to customize the generation of page buttons.
* @param string $label the text label for the button
* @param integer $page the page number
* @param string $class the CSS class for the page button.
* @param boolean $disabled whether this page button is disabled
* @param boolean $active whether this page button is active
- * @return string the generated button
+ * @return string the rendering result
*/
- protected function createPageButton($label, $page, $class, $disabled, $active)
+ protected function renderPageButton($label, $page, $class, $disabled, $active)
{
if ($active) {
$class .= ' ' . $this->activePageCssClass;
diff --git a/framework/yii/widgets/LinkSorter.php b/framework/yii/widgets/LinkSorter.php
index 4921af5..d98d509 100644
--- a/framework/yii/widgets/LinkSorter.php
+++ b/framework/yii/widgets/LinkSorter.php
@@ -7,6 +7,7 @@
namespace yii\widgets;
+use Yii;
use yii\base\InvalidConfigException;
use yii\base\Widget;
use yii\data\Sort;
@@ -28,9 +29,13 @@ class LinkSorter extends Widget
public $sort;
/**
* @var array HTML attributes for the sorter container tag.
- * Please refer to [[Html::ul()]] for supported special options.
*/
- public $options = array();
+ public $options = array('class' => 'sorter');
+ /**
+ * @var string the template used to render the content within the sorter container.
+ * The token "{links}" will be replaced with the actual sort links.
+ */
+ public $template;
/**
* Initializes the sorter.
@@ -40,6 +45,10 @@ class LinkSorter extends Widget
if ($this->sort === null) {
throw new InvalidConfigException('The "sort" property must be set.');
}
+
+ if ($this->template === null) {
+ $this->template = ' {links}';
+ }
}
/**
@@ -48,10 +57,22 @@ class LinkSorter extends Widget
*/
public function run()
{
+ $links = strtr($this->template, array(
+ '{links}' => $this->renderSortLinks(),
+ ));
+ echo Html::tag('div', $links, $this->options);
+ }
+
+ /**
+ * Renders the sort links.
+ * @return string the rendering result
+ */
+ protected function renderSortLinks()
+ {
$links = array();
foreach (array_keys($this->sort->attributes) as $name) {
$links[] = $this->sort->link($name);
}
- echo Html::ul($links, array_merge($this->options, array('encode' => false)));
+ return Html::ul($links, array('encode' => false));
}
}
diff --git a/framework/yii/widgets/ListPager.php b/framework/yii/widgets/ListPager.php
deleted file mode 100644
index 30371d3..0000000
--- a/framework/yii/widgets/ListPager.php
+++ /dev/null
@@ -1,94 +0,0 @@
-
- * @since 2.0
- */
-class ListPager extends Widget
-{
- /**
- * @var Pagination the pagination object that this pager is associated with.
- * You must set this property in order to make ListPager work.
- */
- public $pagination;
- /**
- * @var array HTML attributes for the drop-down list tag. The following options are specially handled:
- *
- * - prompt: string, a prompt text to be displayed as the first option.
- *
- * The rest of the options will be rendered as the attributes of the resulting tag. The values will
- * be HTML-encoded using [[encode()]]. If a value is null, the corresponding attribute will not be rendered.
- */
- public $options = array();
- /**
- * @var string the template used to render the label for each list option.
- * The token "{page}" will be replaced with the actual page number (1-based).
- */
- public $template = '{page}';
-
-
- /**
- * Initializes the pager.
- */
- public function init()
- {
- if ($this->pagination === null) {
- throw new InvalidConfigException('The "pagination" property must be set.');
- }
- }
-
- /**
- * Executes the widget.
- * This overrides the parent implementation by displaying the generated page buttons.
- */
- public function run()
- {
- $pageCount = $this->pagination->getPageCount();
- $currentPage = $this->pagination->getPage();
-
- $pages = array();
- for ($i = 0; $i < $pageCount; ++$i) {
- $pages[$this->pagination->createUrl($i)] = $this->generatePageText($i);
- }
- $selection = $this->pagination->createUrl($currentPage);
-
- if (!isset($this->options['onchange'])) {
- $this->options['onchange'] = "if (this.value != '') { window.location = this.value; };";
- }
-
- echo Html::dropDownList(null, $selection, $pages, $this->options);
- }
-
- /**
- * Generates the label of the list option for the specified page number.
- * You may override this method to customize the option display.
- * @param integer $page zero-based page number
- * @return string the list option for the page number
- */
- protected function generatePageText($page)
- {
- return strtr($this->template, array(
- '{page}' => $page + 1,
- ));
- }
-}