new: [single view] updated, allows for child indeces to be loaded in an accordion
parent
3a16eac89a
commit
5f51668e81
|
@ -12,6 +12,10 @@ echo $this->element(
|
|||
'key' => __('UUID'),
|
||||
'path' => 'uuid'
|
||||
],
|
||||
[
|
||||
'key' => __('Username'),
|
||||
'path' => 'username'
|
||||
],
|
||||
[
|
||||
'key' => __('Email'),
|
||||
'path' => 'individual.email'
|
||||
|
@ -37,6 +41,17 @@ echo $this->element(
|
|||
'scope' => 'individuals'
|
||||
]
|
||||
],
|
||||
'children' => []
|
||||
'children' => [
|
||||
[
|
||||
'url' => '/AuthKeys/index?users_id={{0}}',
|
||||
'url_params' => ['id'],
|
||||
'title' => __('Authentication keys')
|
||||
],
|
||||
[
|
||||
'url' => '/EncryptionKeys/index?users_id={{0}}',
|
||||
'url_params' => ['id'],
|
||||
'title' => __('Encryption keys')
|
||||
]
|
||||
]
|
||||
]
|
||||
);
|
||||
|
|
|
@ -4,22 +4,60 @@
|
|||
*
|
||||
*/
|
||||
$randomId = Cake\Utility\Security::randomString(8);
|
||||
sprintf(
|
||||
'<div class="card">%s</div>',
|
||||
if (!empty($child['url_params'])) {
|
||||
if (!is_array($child['url_params'])) {
|
||||
$child['url_params'] = [$child['url_params']];
|
||||
}
|
||||
foreach ($child['url_params'] as $i => $url_param) {
|
||||
$child['url'] = str_replace('{{' . $i . '}}', $this->Hash->extract($data, $url_param)[0], $child['url']);
|
||||
}
|
||||
}
|
||||
echo sprintf(
|
||||
'<div class="card">%s%s</div>',
|
||||
sprintf(
|
||||
'<div class="card-header" id="heading-%s"><h5 class="mb0">%s</h5></div>',
|
||||
$randomId,
|
||||
sprintf(
|
||||
'<button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">%s</button>',
|
||||
h($title)
|
||||
'<button class="btn btn-link" data-toggle="collapse" data-target="#view-child-%s" aria-expanded="true" aria-controls="collapseOne">%s</button>',
|
||||
$randomId,
|
||||
h($child['title'])
|
||||
)
|
||||
),
|
||||
sprintf(
|
||||
'<div class="collapse %s" id="view-child-%s" data-parent="#accordion" labelledby="heading-%s"><div class="card-body>"%s</div></div>',
|
||||
empty($collapsed) ? 'show' : 'collapsed',
|
||||
'<div class="collapse %s" id="view-child-%s" data-parent="#accordion" labelledby="heading-%s"><div id="view-child-body-%s" class="card-body" data-content-url="%s" data-load-on="%s"></div></div>',
|
||||
!empty($child['collapsed']) ? 'show' : 'collapsed',
|
||||
$randomId,
|
||||
$randomId,
|
||||
h($url)
|
||||
),
|
||||
empty($loadOn) ? 'ready' : h($loadOn)
|
||||
$randomId,
|
||||
h($child['url']),
|
||||
empty($child['loadOn']) ? 'ready' : h($child['loadOn'])
|
||||
)
|
||||
);
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
var url = $('#view-child-body-<?= h($randomId) ?>').data('content-url');
|
||||
var loadon = $('#view-child-body-<?= h($randomId) ?>').data('load-on');
|
||||
if (loadon === 'ready') {
|
||||
$.ajax({
|
||||
success:function (data, textStatus) {
|
||||
$('#view-child-body-<?= h($randomId) ?>').html(data);
|
||||
},
|
||||
type: "get",
|
||||
cache: false,
|
||||
url: url,
|
||||
});
|
||||
} else {
|
||||
$('#view-child-<?= h($randomId) ?>').on('hidden.bs.collapse', function () {
|
||||
$.ajax({
|
||||
success:function (data, textStatus) {
|
||||
$('#view-child-body-<?= h($randomId) ?>').html(data);
|
||||
},
|
||||
type: "get",
|
||||
cache: false,
|
||||
url: url,
|
||||
});
|
||||
})
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -46,10 +46,11 @@
|
|||
$ajaxLists = '';
|
||||
if (!empty($children)) {
|
||||
foreach ($children as $child) {
|
||||
$listElements .= $this->element(
|
||||
$ajaxLists .= $this->element(
|
||||
'/genericElements/SingleViews/child',
|
||||
array(
|
||||
'value' => $child
|
||||
'child' => $child,
|
||||
'data' => $data
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -58,10 +59,11 @@
|
|||
__('{0} view', \Cake\Utility\Inflector::singularize(\Cake\Utility\Inflector::humanize($this->request->getParam('controller')))) :
|
||||
$title;
|
||||
echo sprintf(
|
||||
'<div><h2>%s</h2>%s%s<table class="table table-striped col-sm-8">%s</table><div id="accordion">%s</div></div>',
|
||||
'<div><h2>%s</h2>%s%s<div class="px-3"><table class="table table-striped col-sm-8">%s</table></div><div id="accordion">%s</div></div>',
|
||||
h($title),
|
||||
empty($description) ? '' : sprintf('<p>%s</p>', h($description)),
|
||||
empty($description_html) ? '' : sprintf('<p>%s</p>', $description_html),
|
||||
$listElements,
|
||||
$ajaxLists
|
||||
);
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue