Ejemplo n.º 1
0
 /**
  * @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']);
 }