mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
3334eafcb1
See "Static configuration properties are now immutable, you must use Config API." in the 3.1 change log for details.
76 lines
2.0 KiB
PHP
Executable File
76 lines
2.0 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* GridFieldPage displays a simple current page count summary.
|
|
* E.g. "View 1 - 15 of 32"
|
|
*
|
|
* Depends on GridFieldPaginator being added to the same gridfield
|
|
*
|
|
* @package framework
|
|
* @subpackage fields-relational
|
|
*/
|
|
class GridFieldPageCount implements GridField_HTMLProvider {
|
|
/**
|
|
* @var string placement indicator for this control
|
|
*/
|
|
protected $targetFragment;
|
|
|
|
/**
|
|
* Which template to use for rendering
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $itemClass = 'GridFieldPageCount';
|
|
|
|
/**
|
|
* @param string $targetFrament The fragment indicating the placement of this page count
|
|
*/
|
|
public function __construct($targetFragment = 'before') {
|
|
$this->targetFragment = $targetFragment;
|
|
}
|
|
|
|
/**
|
|
* Flag indicating whether or not this control should throw an error if a
|
|
* {@link GridFieldPaginator} is not present on the same {@link GridField}
|
|
*
|
|
* @config
|
|
* @var boolean
|
|
*/
|
|
private static $require_paginator = true;
|
|
|
|
/**
|
|
* Retrieves an instance of a GridFieldPaginator attached to the same control
|
|
* @param GridField $gridField The parent gridfield
|
|
* @return GridFieldPaginator The attached GridFieldPaginator, if found.
|
|
* @throws LogicException
|
|
*/
|
|
protected function getPaginator($gridField) {
|
|
$paginator = $gridField->getConfig()->getComponentByType('GridFieldPaginator');
|
|
|
|
if(!$paginator && Config::inst()->get('GridFieldPageCount', 'require_paginator')) {
|
|
throw new LogicException(
|
|
get_class($this) . " relies on a GridFieldPaginator to be added " .
|
|
"to the same GridField, but none are present."
|
|
);
|
|
}
|
|
|
|
return $paginator;
|
|
}
|
|
|
|
/**
|
|
* @param GridField $gridField
|
|
* @return array
|
|
*/
|
|
public function getHTMLFragments($gridField) {
|
|
|
|
// Retrieve paging parameters from the directing paginator component
|
|
$paginator = $this->getPaginator($gridField);
|
|
if ($paginator && ($forTemplate = $paginator->getTemplateParameters($gridField))) {
|
|
return array(
|
|
$this->targetFragment => $forTemplate->renderWith($this->itemClass)
|
|
);
|
|
}
|
|
}
|
|
|
|
}
|