protected function PagererStyleBase::prepareJsState in Pagerer 8.2
Same name and namespace in other branches
- 8 src/Plugin/pagerer/PagererStyleBase.php \Drupal\pagerer\Plugin\pagerer\PagererStyleBase::prepareJsState()
Prepares input parameters for a JS enabled pager widget.
This method stores the input state data for a Pagerer widget in the drupalSettings.
Parameters
array $state_settings: The array of state settings to be enriched and stored.
Return value
string the pagerer widget id to refer to in the drupalSettings.pagerer.state entry.
3 calls to PagererStyleBase::prepareJsState()
- Mini::buildPagerItems in src/
Plugin/ pagerer/ Mini.php - Return the pager render array.
- Scrollpane::buildPagerItems in src/
Plugin/ pagerer/ Scrollpane.php - Return the pager render array.
- Slider::buildPagerItems in src/
Plugin/ pagerer/ Slider.php - Return the pager render array.
File
- src/
Plugin/ pagerer/ PagererStyleBase.php, line 691
Class
- PagererStyleBase
- Base plugin for Pagerer.
Namespace
Drupal\pagerer\Plugin\pagererCode
protected function prepareJsState(array &$state_settings) {
// Determine the page index base number.
$settings = $this->configFactory
->get('pagerer.settings');
$querystring_override = $settings
->get('url_querystring.core_override');
$index_base = $querystring_override ? $settings
->get('url_querystring.index_base') : 0;
$querystring_key = $querystring_override ? $settings
->get('url_querystring.querystring_key') : 'page';
$querystring_value_separator = $querystring_override ? PagererParameters::VALUE_SEPARATOR : ',';
// Prepare query parameters.
// In the 'page' querystring fragment, the current page is overridden
// with a text that the js widget will then replace with the content of HTML
// 'value' attribute.
$query = $this->pagerManager
->getPagererUpdatedParameters($this->pager, $this->parameters, 'pagererpage');
// Prepare the query string.
$querystring = UrlHelper::buildQuery($query);
// Are we displaying pages or items; 'value' HTML attribute will bear
// the current $current value.
if ($this
->getOption('display') == 'pages') {
$current = $this->pager
->getCurrentPage() + 1;
$interval = 1;
}
else {
$current = $this->pager
->getLimit() * $this->pager
->getCurrentPage() + 1;
$interval = $this->pager
->getLimit();
}
// Prepare js widget state.
$default_settings = [
'url' => $this->pagerManager
->getHref($this->pager, [], NULL, [], FALSE)
->toString(),
'queryString' => $querystring,
'qsIndexBase' => $index_base,
'qsKey' => $querystring_key,
'qsValueSep' => $querystring_value_separator,
'element' => $this->pager
->getElement(),
'total' => $this->pager
->getTotalPages(),
'totalItems' => $this->pager
->getTotalItems(),
'current' => $this->pager
->getCurrentPage(),
'interval' => $interval,
'display' => $this
->getOption('display'),
'value' => $current,
'pageSeparator' => $this
->getOption('separator_display') ? $this
->getTag('page_separator') : 'none',
'pageTag' => [
'page_current' => $this
->getTag($this
->getOption('display') . '.page_current'),
'page_previous' => $this
->getTag($this
->getOption('display') . '.page_previous'),
'page_next' => $this
->getTag($this
->getOption('display') . '.page_next'),
],
];
$state_settings = NestedArray::mergeDeep($default_settings, $state_settings);
$random_generator = new Random();
$pagerer_widget_id = 'pagerer-widget-' . $random_generator
->name(8, TRUE);
return $pagerer_widget_id;
}