chg: [component:CRUD] Include meta-fields in REST queries and clever pagination support for REST queries
parent
633ae86886
commit
1ea7c796ac
|
@ -96,17 +96,18 @@ class CRUDComponent extends Component
|
|||
$query->order($sort . ' ' . $direction);
|
||||
}
|
||||
}
|
||||
if ($this->metaFieldsSupported() && !$this->Controller->ParamHandler->isRest()) {
|
||||
if ($this->metaFieldsSupported()) {
|
||||
$query = $this->includeRequestedMetaFields($query);
|
||||
}
|
||||
|
||||
if (!$this->Controller->ParamHandler->isRest()) {
|
||||
$this->setRequestedEntryAmount();
|
||||
} else if (!empty($this->request->getQuery('limit'))) {
|
||||
$this->Controller->paginate['limit'] = PHP_INT_MAX; // Make sure to download the entire filtered table
|
||||
}
|
||||
$data = $this->Controller->paginate($query, $this->Controller->paginate ?? []);
|
||||
$totalCount = $this->Controller->getRequest()->getAttribute('paging')[$this->TableAlias]['count'];
|
||||
if ($this->Controller->ParamHandler->isRest()) {
|
||||
$data = $this->Controller->paginate($query, $this->Controller->paginate ?? []);
|
||||
if (isset($options['hidden'])) {
|
||||
$data->each(function($value, $key) use ($options) {
|
||||
$hidden = is_array($options['hidden']) ? $options['hidden'] : [$options['hidden']];
|
||||
|
@ -795,6 +796,9 @@ class CRUDComponent extends Component
|
|||
$user = $this->Controller->ACL->getUser();
|
||||
$tableSettings = IndexSetting::getTableSetting($user, $this->Table);
|
||||
if (!empty($tableSettings['number_of_element'])) {
|
||||
if ($tableSettings['number_of_element'] === 'all') {
|
||||
$tableSettings['number_of_element'] = 10000; // Even with all, sure not to return too much data
|
||||
}
|
||||
$this->Controller->paginate['limit'] = intval($tableSettings['number_of_element']);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ $numberOfElementSelectSeed = 'seed-' . mt_rand();
|
|||
<option value="50" <?= $numberOfElement == 50 ? 'selected' : '' ?>><?= __('50') ?></option>
|
||||
<option value="100" <?= $numberOfElement == 100 ? 'selected' : '' ?>><?= __('100') ?></option>
|
||||
<option value="200" <?= $numberOfElement == 200 ? 'selected' : '' ?>><?= __('200') ?></option>
|
||||
<option value="all" <?= $numberOfElement == 'all' ? 'selected' : '' ?>><?= __('All') ?></option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
|
|
Loading…
Reference in New Issue