chg: [genericElement:indexTable-links] Allow to craft an URL with custom

data_path
pull/5767/head
mokaddem 2020-03-25 10:40:43 +01:00
parent 68aab2bfc2
commit e166f7489b
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
2 changed files with 22 additions and 1 deletions

View File

@ -1,5 +1,23 @@
<?php
/**
* - url: url to reference. Can have `%s` in it to be replaced by `data_path` extracted value.
* - url_params_data_paths: add dynamic URL elements such as an id to the URL. Can be an array with each value added in a separate param. Used if `url` does not have a `%s` marker
*/
$data_elements = Hash::extract($row, $field['data_path']);
$url_param_data_paths = '';
$urlWithData = empty($field['url']) ? '#' : h($field['url']);
if (!empty($field['url_params_data_paths'])) {
if (is_array($field['url_params_data_paths'])) {
$temp = array();
foreach ($field['url_params_data_paths'] as $path) {
$temp[] = h(Hash::extract($row, $path)[0]);
}
$url_param_data_paths = implode('/', $temp);
} else {
$url_param_data_paths = h(Hash::extract($row, $field['url_params_data_paths'])[0]);
}
$urlWithData .= '/' . $url_param_data_paths;
}
$links = array();
foreach ($data_elements as $data) {
if (!empty($data['name'])) {
@ -13,6 +31,8 @@
$field['url'],
$data
);
} elseif (!empty($field['url_params_data_paths'])) {
$url = $urlWithData;
} else {
$url = $data;
}

View File

@ -39,7 +39,8 @@
'element' => 'links',
'class' => 'short',
'data_path' => 'GalaxyCluster.value',
'url' => $baseurl . '/galaxy_clusters/view/%s'
'url_params_data_paths' => 'GalaxyCluster.id',
'url' => $baseurl . '/galaxy_clusters/view'
),
array(
'name' => __('Synonyms'),