Skip to content

Commit

Permalink
Switch to generating edit account based on Member::frontendFields
Browse files Browse the repository at this point in the history
  • Loading branch information
mlewis-everley committed Apr 28, 2018
1 parent 905d6e9 commit 6187002
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 22 deletions.
7 changes: 5 additions & 2 deletions _config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ Group:
extensions:
- Ext_Users_Group
Member:
required_fields:
- "FirstName"
- "Surname"
- "Email"
extensions:
- Ext_Users_Member
Controller:
extensions:
- Ext_Users_Controller

- Ext_Users_Controller
7 changes: 6 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,9 @@ Minor update to:

# 1.2.1

* Add additional extension hooks when edit form submitted
* Add additional extension hooks when edit form submitted

# 1.3.0

* Switch to using frontend form fields to generate the "Edit Account Details" form
* Add better error handling on edit account submission
63 changes: 44 additions & 19 deletions code/forms/Users_EditAccountForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,48 @@
class Users_EditAccountForm extends Form
{

/**
* These fields will be ignored by the `Users_EditAccountForm`
* when generating fields
*/
private static $ignore_member_fields = array(
"LastVisited",
"FailedLoginCount",
"DateFormat",
"TimeFormat",
"VerificationCode",
"Password",
"HasConfiguredDashboard",
"URLSegment",
"BlogProfileSummary",
"BlogProfileImage"
);

public function __construct($controller, $name = "Users_EditAccountForm")
{
$fields = new FieldList(
HiddenField::create("ID"),
TextField::create(
"FirstName",
_t('Member.FIRSTNAME', "First Name")
),
TextField::create(
"Surname",
_t('Member.SURNAME', "Surname")
),
EmailField::create(
"Email",
_t("Member.EMAIL", "Email")
$member = Member::singleton();
$hidden_fields = array_merge(
$member->config()->hidden_fields,
static::config()->ignore_member_fields
);

$fields = $member->getFrontEndFields();

// Remove all "hidden fields"
foreach ($hidden_fields as $field_name) {
$fields->removeByName($field_name);
}

// Add the current member ID
$fields->add(HiddenField::create("ID"));

// Switch locale field
$fields->replaceField(
'Locale',
DropdownField::create(
"Locale",
$member->fieldLabel("Locale"),
i18n::get_existing_translations()
)
);

Expand All @@ -37,11 +64,9 @@ public function __construct($controller, $name = "Users_EditAccountForm")

$this->extend("updateFormActions", $actions);

$required = new RequiredFields(array(
"FirstName",
"Surname",
"Email"
));
$required = new RequiredFields(
$member->config()->required_fields
);

$this->extend("updateRequiredFields", $required);

Expand All @@ -68,7 +93,7 @@ public function doUpdate($data)

$this->extend("onBeforeUpdate", $data);

// Check that a mamber isn't trying to mess up another users profile
// Check that a member isn't trying to mess up another users profile
if (Member::currentUserID() && $member->canEdit(Member::currentUser())) {
// Save member
$this->saveInto($member);
Expand Down

0 comments on commit 6187002

Please sign in to comment.