1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
21:
22: class PaginatorUtilHelper extends AppHelper {
23:
24: public $helpers = array('Html', 'Base.ExtendedForm');
25:
26: public function filterForm() {
27:
28: if (!empty($this->params['paginatorUtil']['filterFields'])) {
29: $submitOptions = array('type' => 'get', 'url' => $this->_updateUrl());
30:
31: $buffer = "<div class='filterForm'>";
32: $buffer .= $this->ExtendedForm->create(null, $submitOptions);
33: $buffer .= "<fieldset><legend>Filter</legend>";
34: foreach ($this->params['paginatorUtil']['filterFields'] as $key => $options) {
35: $buffer .= $this->ExtendedForm->input(Inflector::slug($key), array_merge(
36: $options, array('label' => $key)
37: ));
38: }
39:
40: $buffer .= $this->ExtendedForm->submit(__d('base','Filter', true), array('name' => '_update'));
41: $buffer .= $this->ExtendedForm->submit(__d('base','Show All', true), array('name' => '_clear'));
42: $buffer .= "</fieldset>";
43: $buffer .= $this->ExtendedForm->end();
44: $buffer .= "</div>";
45:
46: return $buffer;
47: } else {
48: return '';
49: }
50: }
51:
52: private function _updateUrl() {
53: $url = Router::parse($this->request->url);
54: $named = empty($url['named']) ? array() : $url['named'];
55: $url += $named;
56: unset($url['named']);
57: $url['page'] = 1;
58: return Router::url($url, true) . '?_update=true';
59: }
60:
61: public function link($label, $parameters, $linkOptions = array()) {
62: $linkParameters = array();
63: foreach ($this->params['paginatorUtil']['filterFields'] as $key => $options) {
64: $value = isset($parameters[$key]) ? $parameters[$key] : $options['value'];
65: if ($value) {
66: $linkParameters[$key] = $value;
67: }
68: }
69:
70: $linkParameters['_update'] = 'true';
71: $pairLinkParameters = array();
72:
73: foreach ($linkParameters as $key => $value) {
74: $pairLinkParameters[] = "$key=$value";
75: }
76:
77: return $this->Html->link($label, '?' . implode('&', $pairLinkParameters), $linkOptions);
78: }
79:
80: }
81:
82: ?>