/** * @param array $options * @return string */ public function counter($options = array()) { if (!isset($options['format'])) { $options['format'] = __('Page {:page} of {:pages}, showing {:current} of {:count} total.'); } return parent::counter($options); }
/** * Get a complete pagination with counter, all navigation button and number. * This is a wrapper around all other individual option with some defaults params. * Inspired by Paginator::counter() function. * * @param $options Options for pagination. * * Extra options: * - counterOptions: Counter options array to override defaults one. (default: empty array) * - firstTitle: First button title. (default: "<<") * - firstOptions: First button options array to override defaults one. * - prevTitle: Prev button title. (default: "<") * - prevOptions: Prev button options array to override defaults one. * - numbersOptions: Numbers buttons options array to override defaults one. * - nextTitle: Next button title. (default: ">") * - nextOptions: Next button options array to override defaults one. * - lastTitle: Last button title. (default: ">>") * - lastOptions: Last button options array to override defaults one. * - wrapOpen: Wrapper opening tag. (default: "<div class="pagination">") * - wrapClose: Wrapper closing tag. (default: "</div>") * - type: How we display buttons. In list or plain. values: list, plain (default: list). This options has precedent on format option. * - format: String that give control on what to display and the order to display element. * Default: "{:wrapOpen} {:counter} {:ulOpen} {:first} {:prev} {:numbers} {:next} {:last} {:ulClose} {:wrapClose}" * Options: * - {:wrapOpen} Display wrap open tag. Use with {:wrapClose}. * - {:counter} Display counter. * - {:ulOpen} Display ul open tag. Use with {:ulClose}. * - {:first} Display first button. * - {:prev} Display prev button. * - {:numbers} Display numbers button. * - {:next} Display next button. * - {:last} Display last button. * - {:ulClose} Display ul close tag. User with {:ulOpen}. * - {:wrapClose} Display wrap close tag. Use with {:wrapOpen}. */ public function pagination($options = []) { $default = ['counterOptions' => [], 'firstTitle' => '<<', 'firstOptions' => [], 'prevTitle' => '<', 'prevOptions' => [], 'prevDisabledTitle' => '<', 'prevDisabledOptions' => [], 'numbersOptions' => [], 'nextTitle' => '>', 'nextOptions' => [], 'nextDisabledTitle' => '>', 'nextDisabledOptions' => [], 'lastTitle' => '>>', 'lastOptions' => [], 'wrapOpen' => '<div class="' . GA_PAGINATION . '">', 'wrapClose' => '</div>', 'type' => 'list', 'format' => '{:wrapOpen} {:counter} {:ulOpen} {:first} {:prev} {:numbers} {:next} {:last} {:ulClose} {:wrapClose}']; $options = array_merge($default, $options); if ($options['type'] === 'plain') { $substitutions = ['{:ulOpen}' => '', '{:ulClose}' => '']; $options['format'] = str_replace(array_keys($substitutions), array_values($substitutions), $options['format']); $options['numbersOptions']['tag'] = ''; $options['firstOptions']['tag'] = ''; $options['prevOptions']['tag'] = ''; $options['nextOptions']['tag'] = ''; $options['lastOptions']['tag'] = ''; } extract($options); $map = ['{:wrapOpen}' => $options['wrapOpen'], '{:counter}' => parent::counter($counterOptions), '{:ulOpen}' => $this->Html->tag('ul'), '{:first}' => $this->first($firstTitle, $firstOptions), '{:prev}' => $this->prev($prevTitle, $prevOptions, $prevDisabledTitle, $prevDisabledOptions), '{:numbers}' => $this->numbers($numbersOptions), '{:next}' => $this->next($nextTitle, $nextOptions, $nextDisabledTitle, $nextDisabledOptions), '{:last}' => $this->last($lastTitle, $lastOptions), '{:ulClose}' => $this->Html->useTag('tagend', 'ul'), '{:wrapClose}' => $options['wrapClose']]; return str_replace(array_keys($map), array_values($map), $options['format']); }