chg: [decaying:index] Added quick filter buttons

pull/5032/head
mokaddem 2019-08-19 10:57:58 +02:00
parent 0e00413259
commit d31f34fed0
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
2 changed files with 86 additions and 1 deletions

View File

@ -94,6 +94,40 @@ class DecayingModelController extends AppController
$this->set('decaying_model', $decaying_model);
}
private function __setIndexFilterConditions($passedArgs)
{
$white_list_url_parameters = array('sort', 'direction');
$passedArgsArray = array();
foreach ($passedArgs as $k => $v) {
switch ($k) {
case 'my_models':
$passedArgsArray[$k] = $v;
if ($v) {
$this->paginate['conditions']['AND'] = array('DecayingModel.org_id' => $this->Auth->user('Organisation')['id']);
}
break;
case 'default_models':
$passedArgsArray[$k] = $v;
if ($v) {
$this->paginate['conditions']['AND'] = array('not' => array('DecayingModel.uuid' => null));
}
break;
case 'all_orgs':
$passedArgsArray[$k] = $v;
if ($v) {
$this->paginate['conditions']['AND'] = array('DecayingModel.all_orgs' => $v);
}
break;
default:
if (in_array($k, $white_list_url_parameters)) {
$passedArgsArray[$k] = $v;
}
break;
}
}
return $passedArgsArray;
}
public function index()
{
$conditions = array();
@ -102,9 +136,11 @@ class DecayingModelController extends AppController
}
if (!$this->_isSiteAdmin()) {
$this->paginate = Set::merge($this->paginate, array(
'conditions' => $conditions
'conditions' => $conditions
));
}
$passedArgsArray = $this->__setIndexFilterConditions($this->passedArgs);
$this->set('passedArgsArray', $passedArgsArray);
$this->set('decayingModel', $this->paginate());
}

View File

@ -16,6 +16,55 @@
?>
</ul>
</div>
<?php
$data = array(
'children' => array(
array(
'children' => array(
array(
'title' => __('My models only'),
'text' => __('My Models'),
'url' => sprintf('%s/%s/%s/%s',
$baseurl . '/decayingModel/index',
isset($passedArgsArray['sort']) ? 'sort:' . $passedArgsArray['sort'] : '',
isset($passedArgsArray['direction']) ? 'direction:' . $passedArgsArray['direction'] : '',
'my_models:' . (!isset($passedArgsArray['my_models']) || !$passedArgsArray['my_models'] ? '1' : '0')
),
'class' => 'searchFilterButton',
'active' => isset($passedArgsArray['my_models']) && $passedArgsArray['my_models']
),
array(
'title' => __('Models available to everyone'),
'text' => __('Shared Models'),
'url' => sprintf('%s/%s/%s/%s',
$baseurl . '/decayingModel/index',
isset($passedArgsArray['sort']) ? 'sort:' . $passedArgsArray['sort'] : '',
isset($passedArgsArray['direction']) ? 'direction:' . $passedArgsArray['direction'] : '',
'all_orgs:' . (!isset($passedArgsArray['all_orgs']) || !$passedArgsArray['all_orgs'] ? '1' : '0')
),
'class' => 'searchFilterButton',
'active' => isset($passedArgsArray['all_orgs']) && $passedArgsArray['all_orgs']
),
array(
'title' => __('Default models only'),
'text' => __('Default Models'),
'url' => sprintf('%s/%s/%s/%s',
$baseurl . '/decayingModel/index',
isset($passedArgsArray['sort']) ? 'sort:' . $passedArgsArray['sort'] : '',
isset($passedArgsArray['direction']) ? 'direction:' . $passedArgsArray['direction'] : '',
'default_models:' . (!isset($passedArgsArray['default_models']) || !$passedArgsArray['default_models'] ? '1' : '0')
),
'class' => 'searchFilterButton',
'active' => isset($passedArgsArray['default_models']) && $passedArgsArray['default_models']
),
)
)
)
);
echo $this->element('/genericElements/ListTopBar/scaffold', array('data' => $data));
?>
<table class="table table-striped table-hover table-condensed">
<tr>
<th><?php echo $this->Paginator->sort('id');?></th>