Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Rotua Panjaitan
yii2
Commits
78e61c9d
Commit
78e61c9d
authored
Jul 21, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed ListPager and refactored LinkPager and LinkSorter.
parent
6ce60c16
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
112 deletions
+42
-112
LinkPager.php
framework/yii/widgets/LinkPager.php
+18
-15
LinkSorter.php
framework/yii/widgets/LinkSorter.php
+24
-3
ListPager.php
framework/yii/widgets/ListPager.php
+0
-94
No files found.
framework/yii/widgets/LinkPager.php
View file @
78e61c9d
...
...
@@ -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 "{
button
s}" will be replaced with the actual page buttons.
* The token "{
page
s}" 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
=
'<label>'
.
Yii
::
t
(
'yii'
,
'Go to page:'
)
.
'</label> {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
);
}
/**
*
Create
s the page buttons.
* @return
array a list of page buttons (in HTML code).
*
Render
s the page buttons.
* @return
string the rendering result
*/
protected
function
create
PageButtons
()
protected
function
render
PageButtons
()
{
$buttons
=
array
();
...
...
@@ -127,7 +130,7 @@ class LinkPager extends Widget
// first page
if
(
$this
->
firstPageLabel
!==
null
)
{
$buttons
[]
=
$this
->
create
PageButton
(
$this
->
firstPageLabel
,
0
,
$this
->
firstPageCssClass
,
$currentPage
<=
0
,
false
);
$buttons
[]
=
$this
->
render
PageButton
(
$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
->
create
PageButton
(
$this
->
prevPageLabel
,
$page
,
$this
->
prevPageCssClass
,
$currentPage
<=
0
,
false
);
$buttons
[]
=
$this
->
render
PageButton
(
$this
->
prevPageLabel
,
$page
,
$this
->
prevPageCssClass
,
$currentPage
<=
0
,
false
);
}
// internal pages
list
(
$beginPage
,
$endPage
)
=
$this
->
getPageRange
();
for
(
$i
=
$beginPage
;
$i
<=
$endPage
;
++
$i
)
{
$buttons
[]
=
$this
->
create
PageButton
(
$i
+
1
,
$i
,
null
,
false
,
$i
==
$currentPage
);
$buttons
[]
=
$this
->
render
PageButton
(
$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
->
create
PageButton
(
$this
->
nextPageLabel
,
$page
,
$this
->
nextPageCssClass
,
$currentPage
>=
$pageCount
-
1
,
false
);
$buttons
[]
=
$this
->
render
PageButton
(
$this
->
nextPageLabel
,
$page
,
$this
->
nextPageCssClass
,
$currentPage
>=
$pageCount
-
1
,
false
);
}
// last page
if
(
$this
->
lastPageLabel
!==
null
)
{
$buttons
[]
=
$this
->
create
PageButton
(
$this
->
lastPageLabel
,
$pageCount
-
1
,
$this
->
lastPageCssClass
,
$currentPage
>=
$pageCount
-
1
,
false
);
$buttons
[]
=
$this
->
render
PageButton
(
$this
->
lastPageLabel
,
$pageCount
-
1
,
$this
->
lastPageCssClass
,
$currentPage
>=
$pageCount
-
1
,
false
);
}
return
$buttons
;
return
Html
::
tag
(
'ul'
,
implode
(
"
\n
"
,
$buttons
))
;
}
/**
*
Create
s a page button.
*
Render
s 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
create
PageButton
(
$label
,
$page
,
$class
,
$disabled
,
$active
)
protected
function
render
PageButton
(
$label
,
$page
,
$class
,
$disabled
,
$active
)
{
if
(
$active
)
{
$class
.=
' '
.
$this
->
activePageCssClass
;
...
...
framework/yii/widgets/LinkSorter.php
View file @
78e61c9d
...
...
@@ -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
=
'<label>'
.
Yii
::
t
(
'yii'
,
'Sort by:'
)
.
'</label> {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
));
}
}
framework/yii/widgets/ListPager.php
deleted
100644 → 0
View file @
6ce60c16
<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace
yii\widgets
;
use
yii\base\InvalidConfigException
;
use
yii\helpers\Html
;
use
yii\base\Widget
;
use
yii\data\Pagination
;
/**
* ListPager displays a drop-down list that contains options leading to different pages.
*
* ListPager works with a [[Pagination]] object which specifies the totally number
* of pages and the current page number.
*
* Note that ListPager requires JavaScript to work. You should consider using [[LinkPager]]
* if you want to make your page work without JavaScript.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @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
,
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment