chg: [templates] Overhaul of the factories
parent
1da22d28d8
commit
bb79b2a383
|
@ -24,7 +24,7 @@
|
|||
$data['url'] = ["controller" => $this->request->getParam('controller'), "action" => $this->request->getParam('url')];
|
||||
}
|
||||
$formRandomValue = Cake\Utility\Security::randomString(8);
|
||||
$formCreate = $this->Form->create($data['entity'], ['id' => 'form-' . $formRandomValue]);
|
||||
$formCreate = $this->Form->create($entity, ['id' => 'form-' . $formRandomValue]);
|
||||
$default_template = [
|
||||
'inputContainer' => '<div class="form-group row">{{content}}</div>',
|
||||
'inputContainerError' => '<div class="form-group row has-error">{{content}}</div>',
|
||||
|
@ -34,9 +34,11 @@
|
|||
'select' => '<select name="{{name}}" {{attrs}}>{{content}}</select>',
|
||||
'checkbox' => '<input type="checkbox" name="{{name}}" value="{{value}}"{{attrs}}>',
|
||||
'checkboxFormGroup' => '{{label}}',
|
||||
'select' => '<select name="{{name}}" {{attrs}}>{{content}}</select>',
|
||||
'formGroup' => '<div class="col-sm-2 col-form-label" {{attrs}}>{{label}}</div><div class="col-sm-10">{{input}}</div>',
|
||||
'nestingLabel' => '{{hidden}}<div class="col-sm-2 col-form-label">{{text}}</div><div class="col-sm-10">{{input}}</div>',
|
||||
'option' => '<option value="{{value}}"{{attrs}}>{{text}}</option>',
|
||||
'optgroup' => '<optgroup label="{{label}}"{{attrs}}>{{content}}</optgroup>',
|
||||
'select' => '<select name="{{name}}"{{attrs}}>{{content}}</select>'
|
||||
];
|
||||
if (!empty($data['fields'])) {
|
||||
foreach ($data['fields'] as $fieldData) {
|
||||
|
@ -120,9 +122,11 @@
|
|||
);
|
||||
}
|
||||
$formEnd = $this->Form->end();
|
||||
$actionName = h(\Cake\Utility\Inflector::humanize($this->request->getParam('action')));
|
||||
$modelName = h(\Cake\Utility\Inflector::humanize(\Cake\Utility\Inflector::singularize($this->request->getParam('controller'))));
|
||||
if (!empty($ajax)) {
|
||||
echo $this->element('genericElements/genericModal', array(
|
||||
'title' => empty($data['title']) ? h(\Cake\Utility\Inflector::humanize($this->request->params['action'])) . ' ' . $modelForForm : h($data['title']),
|
||||
'title' => empty($data['title']) ? sprintf('%s %s', $actionName, $modelName) : h($data['title']),
|
||||
'body' => sprintf(
|
||||
'%s%s%s%s%s%s',
|
||||
empty($data['description']) ? '' : sprintf(
|
||||
|
@ -142,7 +146,7 @@
|
|||
echo sprintf(
|
||||
'%s<h2>%s</h2>%s%s%s%s%s%s%s%s',
|
||||
empty($ajax) ? '<div class="col-8">' : '',
|
||||
empty($data['title']) ? h(\Cake\Utility\Inflector::humanize($this->request->params['action'])) . ' ' . $modelForForm : h($data['title']),
|
||||
empty($data['title']) ? sprintf('%s %s', $actionName, $modelName) : h($data['title']),
|
||||
$formCreate,
|
||||
$ajaxFlashMessage,
|
||||
empty($data['description']) ? '' : sprintf(
|
||||
|
|
|
@ -26,6 +26,21 @@
|
|||
);
|
||||
}
|
||||
}
|
||||
if (!empty($field['url'])) {
|
||||
if (!empty($field['url_vars'])) {
|
||||
if (!is_array($field['url_vars'])) {
|
||||
$field['url_vars'] = [$field['url_vars']];
|
||||
}
|
||||
foreach ($field['url_vars'] as $k => $path) {
|
||||
$field['url'] = str_replace('{{' . $k . '}}', $this->Hash->extract($row, $path)[0], $field['url']);
|
||||
}
|
||||
}
|
||||
$data = sprintf(
|
||||
'<a href="%s">%s</a>',
|
||||
h($field['url']),
|
||||
$data
|
||||
);
|
||||
}
|
||||
if (!empty($field['onClick'])) {
|
||||
$data = sprintf(
|
||||
'<span onClick="%s">%s</span>',
|
||||
|
|
|
@ -1,47 +1,20 @@
|
|||
<?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
|
||||
* - url: A url to link to. Can include placeholders for variables using the {{0}} notation
|
||||
* - url_vars: ordered list of parameters, to be used as replacements in the url (first parameter would replace {{0}} for example)
|
||||
*/
|
||||
$data_elements = $this->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($this->Hash->extract($row, $path)[0]);
|
||||
}
|
||||
$url_param_data_paths = implode('/', $temp);
|
||||
} else {
|
||||
$url_param_data_paths = h($this->Hash->extract($row, $field['url_params_data_paths'])[0]);
|
||||
if (!empty($field['url_vars']) && !empty($field['url'])) {
|
||||
if (!is_array($field['url_vars'])) {
|
||||
$field['url_vars'] = [$field['url_vars']];
|
||||
}
|
||||
foreach ($field['url_vars'] as $k => $path) {
|
||||
$field['url'] = str_replace('{{' . $k . '}}', $this->Hash->extract($row, $path)[0], $field['url']);
|
||||
}
|
||||
$urlWithData .= '/' . $url_param_data_paths;
|
||||
}
|
||||
$links = array();
|
||||
foreach ($data_elements as $data) {
|
||||
if (!empty($data['name'])) {
|
||||
$field['title'] = $data['name'];
|
||||
}
|
||||
if (!empty($data['url'])) {
|
||||
$data = $data['url'];
|
||||
}
|
||||
if (isset($field['url']) && strpos($field['url'], '%s') !== false) {
|
||||
$url = sprintf(
|
||||
$field['url'],
|
||||
$data
|
||||
);
|
||||
} elseif (!empty($field['url_params_data_paths'])) {
|
||||
$url = $urlWithData;
|
||||
} else {
|
||||
$url = $data;
|
||||
}
|
||||
$links[] = sprintf(
|
||||
'<a href="%s" title="%s">%s</a>',
|
||||
h($url),
|
||||
empty($field['title']) ? h($data) : h($field['title']),
|
||||
empty($field['title']) ? h($data) : h($field['title'])
|
||||
);
|
||||
}
|
||||
echo implode('<br />', $links);
|
||||
echo sprintf(
|
||||
'<a href="%s" title="%s">%s</a>',
|
||||
empty($field['name']) ? h($field['url']) : h($field['name']),
|
||||
empty($field['name']) ? h($field['url']) : h($field['name']),
|
||||
h($field['url'])
|
||||
);
|
||||
?>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<?php
|
||||
$alignments = '';
|
||||
$extracted = $data;
|
||||
if (!empty($field['path'])) {
|
||||
if (strpos('.', $field['path']) !== false) {
|
||||
$extracted = Cake\Utility\Hash::extract($data, empty($field['path']) ? 'individual' : $field['path']);
|
||||
} else {
|
||||
$extracted = $data[$field['path']];
|
||||
}
|
||||
}
|
||||
if ($field['scope'] === 'individuals') {
|
||||
foreach ($data['alignments'] as $alignment) {
|
||||
foreach ($extracted['alignments'] as $alignment) {
|
||||
$alignments .= sprintf(
|
||||
'<div><span class="font-weight-bold">%s</span> @ %s <a href="#" class="fas fa-trash text-black" onClick="%s"></a></div>',
|
||||
h($alignment['type']),
|
||||
|
@ -20,7 +28,7 @@ if ($field['scope'] === 'individuals') {
|
|||
);
|
||||
}
|
||||
} else if ($field['scope'] === 'organisations') {
|
||||
foreach ($data['alignments'] as $alignment) {
|
||||
foreach ($extracted['alignments'] as $alignment) {
|
||||
$alignments .= sprintf(
|
||||
'<div>[<span class="font-weight-bold">%s</span>] %s <a href="#" class="fas fa-trash text-black" onClick="%s"></a></div>',
|
||||
h($alignment['type']),
|
||||
|
@ -45,7 +53,7 @@ echo sprintf(
|
|||
sprintf(
|
||||
"populateAndLoadModal('/alignments/add/%s/%s');",
|
||||
h($field['scope']),
|
||||
h($data['id'])
|
||||
h($extracted['id'])
|
||||
),
|
||||
$field['scope'] === 'individuals' ? __('Add organisation') : __('Add individual')
|
||||
);
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
$value = Cake\Utility\Hash::extract($data, $field['path']);
|
||||
echo sprintf(
|
||||
'<i class="fas fa-%s"></i>',
|
||||
empty($value[0]) ? 'times' : 'check'
|
||||
);
|
|
@ -1,3 +1,19 @@
|
|||
<?php
|
||||
$value = Cake\Utility\Hash::extract($data, $field['path']);
|
||||
echo empty($value[0]) ? '' : $value[0];
|
||||
$string = empty($value[0]) ? '' : $value[0];
|
||||
if (!empty($field['url'])) {
|
||||
if (!empty($field['url_vars'])) {
|
||||
if (!is_array($field['url_vars'])) {
|
||||
$field['url_vars'] = [$field['url_vars']];
|
||||
}
|
||||
foreach ($field['url_vars'] as $k => $path) {
|
||||
$field['url'] = str_replace('{{' . $k . '}}', $this->Hash->extract($data, $path)[0], $field['url']);
|
||||
}
|
||||
}
|
||||
$string = sprintf(
|
||||
'<a href="%s">%s</a>',
|
||||
h($field['url']),
|
||||
$string
|
||||
);
|
||||
}
|
||||
echo $string;
|
||||
|
|
|
@ -54,9 +54,12 @@
|
|||
);
|
||||
}
|
||||
}
|
||||
$title = empty($title) ?
|
||||
__('{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>',
|
||||
empty($title) ? __('%s View', h(\Cake\Utility\Inflector::humanize($this->request->getParam('controller')))) : h($title),
|
||||
h($title),
|
||||
empty($description) ? '' : sprintf('<p>%s</p>', h($description)),
|
||||
empty($description_html) ? '' : sprintf('<p>%s</p>', $description_html),
|
||||
$listElements,
|
||||
|
|
|
@ -24,7 +24,11 @@ if (isset($menu[$metaGroup])) {
|
|||
if (!empty($matches[0])) {
|
||||
$mainEntity = \Cake\Utility\Inflector::underscore(\Cake\Utility\Inflector::singularize($scope));
|
||||
foreach ($matches as $match) {
|
||||
$data['url'] = str_replace($match[0], ${$mainEntity}[substr($match[0], 2, 2)], $data['url']);
|
||||
$data['url'] = str_replace(
|
||||
$match[0],
|
||||
Cake\Utility\Hash::extract($entity, trim($match[0], '{}'))[0],
|
||||
$data['url']
|
||||
);
|
||||
}
|
||||
}
|
||||
$children .= sprintf(
|
||||
|
|
Loading…
Reference in New Issue