Skip to content

Commit

Permalink
added: option to prefill a field with a user attibute/profile field
Browse files Browse the repository at this point in the history
  • Loading branch information
jeabakker committed Aug 3, 2018
1 parent 9a26474 commit 0b4fa04
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 6 deletions.
21 changes: 18 additions & 3 deletions classes/ColdTrick/Forms/Definition/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,24 @@ public function getInputVars(array $additional_vars = []) {
$result = $this->config;

// remove unneeded vars
if ($result['multiple'] === '') {
unset($result['multiple']);
}
// value (with support for default value)
if ($result['value'] === '') {
unset($result['value']);
}
if ($result['multiple'] === '') {
unset($result['multiple']);
$supports_default = ['text', 'email', 'number', 'plaintext', 'longtext', 'select'];
if (!isset($result['value']) && in_array($this->getType(), $supports_default) && !empty($result['default_value'])) {
$profile_field = $result['default_value'];
$user = elgg_get_logged_in_user_entity();
if (!empty($user)) {
$result['value'] = $user->$profile_field;
}
}
unset($result['default_value']);

// futher cleanup
$options_key = 'options_values';
$options = $this->getOptions();
unset($result['options']);
Expand All @@ -113,6 +124,9 @@ public function getInputVars(array $additional_vars = []) {
unset($result['#label']);
unset($result['multiple']);
break;
case 'file':
unset($result['value']);
break;
}

if (!empty($options)) {
Expand All @@ -132,9 +146,10 @@ public function getInputVars(array $additional_vars = []) {
switch ($this->getType()) {
case 'checkbox':
// @todo how does this work
break;
case 'hidden':
// value is pre-programmed
case 'file':
// doesn't work
break;
default:
$result['value'] = $sticky_value;
Expand Down
3 changes: 3 additions & 0 deletions languages/en.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@
'forms:compose:field:edit:options:help' => "Comma separate the options for this field",
'forms:compose:field:edit:validation_rule' => "Validation rule",
'forms:compose:field:edit:value' => "Value",
'forms:compose:field:edit:default_value' => "Default value",
'forms:compose:field:edit:default_value:help' => "You can select a user attribute to be prefilled in the field",
'forms:compose:field:edit:default_value:none' => "No default value",

'forms:compose:field:edit:email_recipient' => "Add e-mail address to:",
'forms:compose:field:edit:email_recipient:none' => "No recipient",
Expand Down
8 changes: 6 additions & 2 deletions languages/nl.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
<?php
/**
* This file was created by Translation Editor v6.0
* On 2017-12-19 12:57
* This file was created by Translation Editor v6.1
* On 2018-08-03 14:51
*/

return array (
'forms:by_line:submissions' => 'Aantal ingevulde formulieren',
'forms:compose:field:edit:default_value' => 'Standaard waarde',
'forms:compose:field:edit:default_value:help' => 'Je kunt een gebruikers attribuut selecteren om het veld standaard mee in te vullen',
'forms:compose:field:edit:default_value:none' => 'Geen standaard waarde',
'forms:endpoint:email:cc:user' => 'Stuur automatisch een kopie naar de gebruiker die het formulier invult',
'forms:compose:field:type:hidden' => 'Verborgen',
'forms:compose:field:edit:value' => 'Waarde',
Expand Down
27 changes: 26 additions & 1 deletion views/default/form/compose/edit_field.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
<?php

$default_options = [
'' => elgg_echo('forms:compose:field:edit:default_value:none'),
'name' => elgg_echo('name'),
'username' => elgg_echo('username'),
'email' => elgg_echo('email'),
];

$profile_fields = elgg_get_config('profile_fields');
if (!empty($profile_fields)) {
foreach ($profile_fields as $metadata_name => $type) {
$label = $metadata_name;
if (elgg_language_key_exists("profile:{$metadata_name}")) {
$label = elgg_echo("profile:{$metadata_name}") . " ({$metadata_name})";
}
$default_options[$metadata_name] = $label;
}
}

$fields = [
[
'#type' => 'text',
Expand Down Expand Up @@ -85,7 +103,14 @@
'show_for_types' => ['select'],
],


[
'#type' => 'select',
'#label' => elgg_echo('forms:compose:field:edit:default_value'),
'#help' => elgg_echo('forms:compose:field:edit:default_value:help'),
'name' => 'default_value',
'options_values' => $default_options,
'show_for_types' => ['text', 'email', 'number', 'plaintext', 'longtext', 'select'],
],

// end of conditional fields

Expand Down

0 comments on commit 0b4fa04

Please sign in to comment.