Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lang/de_de.lang
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,8 @@ yform_values_be_link_multiple = Mehrfachauswahl
yform_values_prio_fields = Anzeige
yform_values_prio_scope = Beschränkung
yform_values_prio_default = Am Anfang
yform_values_prio_label_expression = Individuelle Anzeige (SQL)
yform_values_prio_label_expression_notice = SQL-Ausdruck als individuelle Anzeige, z.B. CONCAT(lastname, ", ", firstname). Überschreibt "Anzeige".

yform_is = ist
yform_will_set_to = wird
Expand Down
2 changes: 2 additions & 0 deletions lang/en_gb.lang
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,8 @@ yform_values_be_link_multiple = Multiselect
yform_values_prio_fields = Display
yform_values_prio_scope = Restriction
yform_values_prio_default = At the top
yform_values_prio_label_expression = Custom display (SQL)
yform_values_prio_label_expression_notice = SQL expression as custom display, e.g. CONCAT(lastname, ", ", firstname). Overrides "Display".

yform_is = is
yform_will_set_to = will be
Expand Down
2 changes: 2 additions & 0 deletions lang/es_es.lang
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,8 @@ yform_values_be_link_multiple = La selección múltiple
yform_values_prio_fields = Visualización
yform_values_prio_scope = Restricción
yform_values_prio_default = En el comienzo
yform_values_prio_label_expression = Visualización personalizada (SQL)
yform_values_prio_label_expression_notice = Expresión SQL como visualización personalizada, p.ej. CONCAT(lastname, ", ", firstname). Reemplaza "Visualización".

yform_is = Es
yform_will_set_to = Deberá
Expand Down
2 changes: 2 additions & 0 deletions lang/pt_br.lang
Original file line number Diff line number Diff line change
Expand Up @@ -461,3 +461,5 @@ yform_values_be_link_multiple = Seleção múltipla
yform_values_prio_fields = Exibir
yform_values_prio_scope = Restrição
yform_values_prio_default = No começo
yform_values_prio_label_expression = Exibição personalizada (SQL)
yform_values_prio_label_expression_notice = Expressão SQL como exibição personalizada, ex. CONCAT(lastname, ", ", firstname). Substitui "Exibir".
2 changes: 2 additions & 0 deletions lang/sv_se.lang
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,8 @@ yform_values_be_link_multiple = Multiselect
yform_values_prio_fields = Display
yform_values_prio_scope = Begränsning
yform_values_prio_default = Till början
yform_values_prio_label_expression = Anpassad visning (SQL)
yform_values_prio_label_expression_notice = SQL-uttryck som anpassad visning, t.ex. CONCAT(lastname, ", ", firstname). Åsidosätter "Display".

yform_is = är
yform_will_set_to = kommer att bli
Expand Down
79 changes: 51 additions & 28 deletions lib/Field/value/prio.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,35 +25,57 @@ public function enterObject()
if ($this->debug) {
$sql->setDebug();
}
$fields = $this->getElement('fields');
if (!is_array($fields)) {
$fields = array_filter(explode(',', $fields));
}
if (empty($fields)) {
$fields = ['id'];
}
$selectFields = [];
foreach ($fields as $field) {
$selectFields[] = $field;
}
$sql->setQuery(sprintf(
'SELECT id, %s, %s as prio FROM %s%s ORDER BY %2$s',
implode(', ', $selectFields),
$this->getElement('name'),
$this->params['main_table'],
$scopeWhere,
));
$prio = 1;
while ($sql->hasNext()) {
if ($sql->getValue('id') != $this->params['main_id']) {
$prio = $sql->getValue('prio') + 1;
$label = [];
foreach ($fields as $field) {
$label[] = rex_i18n::translate((string) $sql->getValue($field), false);
$rawLabelExpression = $this->getElement('label_expression');
$labelExpression = is_array($rawLabelExpression) ? '' : trim((string) $rawLabelExpression);

if ('' !== $labelExpression) {
$sql->setQuery(sprintf(
'SELECT id, (%s) AS _prio_label, %s as prio FROM %s%s ORDER BY %2$s',
$labelExpression,
$this->getElement('name'),
$this->params['main_table'],
$scopeWhere,
));
$prio = 1;
while ($sql->hasNext()) {
if ($sql->getValue('id') != $this->params['main_id']) {
$prio = $sql->getValue('prio') + 1;
$label = rex_i18n::translate((string) $sql->getValue('_prio_label'), false);
$options[$prio] = rex_i18n::msg('yform_prio_after', $label);
}
$sql->next();
}
} else {
$fields = $this->getElement('fields');
if (!is_array($fields)) {
$fields = array_filter(explode(',', $fields));
}
if (empty($fields)) {
$fields = ['id'];
}
$selectFields = [];
foreach ($fields as $field) {
$selectFields[] = $field;
}
$sql->setQuery(sprintf(
'SELECT id, %s, %s as prio FROM %s%s ORDER BY %2$s',
implode(', ', $selectFields),
$this->getElement('name'),
$this->params['main_table'],
$scopeWhere,
));
$prio = 1;
while ($sql->hasNext()) {
if ($sql->getValue('id') != $this->params['main_id']) {
$prio = $sql->getValue('prio') + 1;
$label = [];
foreach ($fields as $field) {
$label[] = rex_i18n::translate((string) $sql->getValue($field), false);
}
$options[$prio] = rex_i18n::msg('yform_prio_after', implode(' | ', $label));
}
$options[$prio] = rex_i18n::msg('yform_prio_after', implode(' | ', $label));
$sql->next();
}
$sql->next();
}
}

Expand Down Expand Up @@ -88,7 +110,7 @@ public function enterObject()

public function getDescription(): string
{
return 'prio|name|label|fields|scope|defaultwert';
return 'prio|name|label|fields|scope|defaultwert|label_expression';
}

public function getDefinitions(): array
Expand All @@ -102,6 +124,7 @@ public function getDefinitions(): array
'fields' => ['type' => 'select_names', 'label' => rex_i18n::msg('yform_values_prio_fields')],
'scope' => ['type' => 'select_names', 'label' => rex_i18n::msg('yform_values_prio_scope')],
'default' => ['type' => 'choice', 'label' => rex_i18n::msg('yform_values_prio_default'), 'choices' => [1 => 'Am Anfang', '' => 'Am Ende']],
'label_expression' => ['type' => 'text', 'label' => rex_i18n::msg('yform_values_prio_label_expression'), 'notice' => rex_i18n::msg('yform_values_prio_label_expression_notice')],
'attributes' => ['type' => 'text', 'label' => rex_i18n::msg('yform_values_defaults_attributes'), 'notice' => rex_i18n::msg('yform_values_defaults_attributes_notice')],
'notice' => ['type' => 'text', 'label' => rex_i18n::msg('yform_values_defaults_notice')],
],
Expand Down
Loading