mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #9546 from andrewandante/feature/disambiguate_first_methods_on_lists
deprecate First and Last in order to disambiguate for array lists
This commit is contained in:
commit
714c4cba9c
@ -358,6 +358,8 @@ iteration.
|
||||
* `$Even`, `$Odd`: Returns boolean, handy for zebra striping.
|
||||
* `$EvenOdd`: Returns a string, either 'even' or 'odd'. Useful for CSS classes.
|
||||
* `$First`, `$Last`, `$Middle`: Booleans about the position in the list.
|
||||
* Note: as of CMS 4.7.0 `$IsFirst` and `$IsLast` will be preferred. The original
|
||||
syntax will continue to work, but will be deprecated in a future release.
|
||||
* `$FirstLast`: Returns a string, "first", "last", "first last" (if both), or "". Useful for CSS classes.
|
||||
* `$Pos`: The current position in the list (integer).
|
||||
Will start at 1, but can take a starting index as a parameter.
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace SilverStripe\View;
|
||||
|
||||
use SilverStripe\Dev\Deprecation;
|
||||
|
||||
/**
|
||||
* Defines an extra set of basic methods that can be used in templates
|
||||
* that are not defined on sub-classes of {@link ViewableData}.
|
||||
@ -24,6 +26,8 @@ class SSViewer_BasicIteratorSupport implements TemplateIteratorProvider
|
||||
public static function get_template_iterator_variables()
|
||||
{
|
||||
return [
|
||||
'IsFirst',
|
||||
'IsLast',
|
||||
'First',
|
||||
'Last',
|
||||
'FirstLast',
|
||||
@ -57,21 +61,41 @@ class SSViewer_BasicIteratorSupport implements TemplateIteratorProvider
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function First()
|
||||
public function IsFirst()
|
||||
{
|
||||
return $this->iteratorPos == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 5.0.0 Use IsFirst() to avoid clashes with SS_Lists
|
||||
* @return bool
|
||||
*/
|
||||
public function First()
|
||||
{
|
||||
Deprecation::notice('5.0.0', 'Use IsFirst() to avoid clashes with SS_Lists');
|
||||
return $this->IsFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this object is the last in a set.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function Last()
|
||||
public function IsLast()
|
||||
{
|
||||
return $this->iteratorPos == $this->iteratorTotalItems - 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 5.0.0 Use IsLast() to avoid clashes with SS_Lists
|
||||
* @return bool
|
||||
*/
|
||||
public function Last()
|
||||
{
|
||||
Deprecation::notice('5.0.0', 'Use IsLast() to avoid clashes with SS_Lists');
|
||||
return $this->IsLast();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns 'first' or 'last' if this is the first or last object in the set.
|
||||
*
|
||||
@ -79,13 +103,13 @@ class SSViewer_BasicIteratorSupport implements TemplateIteratorProvider
|
||||
*/
|
||||
public function FirstLast()
|
||||
{
|
||||
if ($this->First() && $this->Last()) {
|
||||
if ($this->IsFirst() && $this->IsLast()) {
|
||||
return 'first last';
|
||||
}
|
||||
if ($this->First()) {
|
||||
if ($this->IsFirst()) {
|
||||
return 'first';
|
||||
}
|
||||
if ($this->Last()) {
|
||||
if ($this->IsLast()) {
|
||||
return 'last';
|
||||
}
|
||||
return null;
|
||||
@ -98,7 +122,7 @@ class SSViewer_BasicIteratorSupport implements TemplateIteratorProvider
|
||||
*/
|
||||
public function Middle()
|
||||
{
|
||||
return !$this->First() && !$this->Last();
|
||||
return !$this->IsFirst() && !$this->IsLast();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user