X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Femailsettings.php;h=3e977074fcc0a57823826e979699dd74abc8a4ba;hb=dc424ab63a91bf4c29198452d54543b8737b65ac;hp=761aaa8f31f397bcd2dbb3fad24c4efa4bfefd83;hpb=4b98edf75f4e255f8c61087bd1525d89653a521f;p=quix0rs-gnu-social.git diff --git a/actions/emailsettings.php b/actions/emailsettings.php index 761aaa8f31..3e977074fc 100644 --- a/actions/emailsettings.php +++ b/actions/emailsettings.php @@ -46,7 +46,6 @@ require_once INSTALLDIR.'/lib/accountsettingsaction.php'; * * @see Widget */ - class EmailsettingsAction extends AccountSettingsAction { /** @@ -54,10 +53,10 @@ class EmailsettingsAction extends AccountSettingsAction * * @return string Title of the page */ - function title() { - return _('Email Settings'); + // TRANS: Title for e-mail settings. + return _('Email settings'); } /** @@ -65,15 +64,19 @@ class EmailsettingsAction extends AccountSettingsAction * * @return instructions for use */ - function getInstructions() { + // XXX: For consistency of parameters in messages, this should be a + // regular parameters, replaced with sprintf(). + // TRANS: E-mail settings page instructions. + // TRANS: %%site.name%% is the name of the site. return _('Manage how you get email from %%site.name%%.'); } function showScripts() { parent::showScripts(); + $this->script('emailsettings.js'); $this->autofocus('email'); } @@ -85,7 +88,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function showContent() { $user = common_current_user(); @@ -97,102 +99,155 @@ class EmailsettingsAction extends AccountSettingsAction common_local_url('emailsettings'))); $this->elementStart('fieldset'); $this->elementStart('fieldset', array('id' => 'settings_email_address')); - $this->element('legend', null, _('Address')); + // TRANS: Form legend for e-mail settings form. + $this->element('legend', null, _('Email address')); $this->hidden('token', common_session_token()); if ($user->email) { $this->element('p', array('id' => 'form_confirmed'), $user->email); + // TRANS: Form note in e-mail settings form. $this->element('p', array('class' => 'form_note'), _('Current confirmed email address.')); $this->hidden('email', $user->email); - $this->submit('remove', _('Remove')); + // TRANS: Button label to remove a confirmed e-mail address. + $this->submit('remove', _m('BUTTON','Remove')); } else { $confirm = $this->getConfirmation(); if ($confirm) { $this->element('p', array('id' => 'form_unconfirmed'), $confirm->address); $this->element('p', array('class' => 'form_note'), + // TRANS: Form note in e-mail settings form. _('Awaiting confirmation on this address. '. 'Check your inbox (and spam box!) for a message '. 'with further instructions.')); $this->hidden('email', $confirm->address); - $this->submit('cancel', _('Cancel')); + // TRANS: Button label to cancel an e-mail address confirmation procedure. + $this->submit('cancel', _m('BUTTON','Cancel')); } else { $this->elementStart('ul', 'form_data'); $this->elementStart('li'); - $this->input('email', _('Email Address'), + // TRANS: Field label for e-mail address input in e-mail settings form. + $this->input('email', _('Email address'), ($this->arg('email')) ? $this->arg('email') : null, + // TRANS: Instructions for e-mail address input form. Do not translate + // TRANS: "example.org". It is one of the domain names reserved for + // TRANS: use in examples by http://www.rfc-editor.org/rfc/rfc2606.txt. + // TRANS: Any other domain may be owned by a legitimate person or + // TRANS: organization. _('Email address, like "UserName@example.org"')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('add', _('Add')); + // TRANS: Button label for adding an e-mail address in e-mail settings form. + $this->submit('add', _m('BUTTON','Add')); } } $this->elementEnd('fieldset'); if (common_config('emailpost', 'enabled') && $user->email) { $this->elementStart('fieldset', array('id' => 'settings_email_incoming')); - $this->element('legend',_('Incoming email')); + // TRANS: Form legend for incoming e-mail settings form. + $this->element('legend', null, _('Incoming email')); + + $this->elementStart('ul', 'form_data'); + $this->elementStart('li'); + $this->checkbox('emailpost', + // TRANS: Checkbox label in e-mail preferences form. + _('I want to post notices by email.'), + $user->emailpost); + $this->elementEnd('li'); + $this->elementEnd('ul'); + + // Our stylesheets make the form_data list items all floats, which + // creates lots of problems with trying to wrap divs around things. + // This should force a break before the next section, which needs + // to be separate so we can disable the things in it when the + // checkbox is off. + $this->elementStart('div', array('style' => 'clear: both')); + $this->elementEnd('div'); + + $this->elementStart('div', array('id' => 'emailincoming')); + if ($user->incomingemail) { $this->elementStart('p'); $this->element('span', 'address', $user->incomingemail); + // @todo XXX: Looks a little awkward in the UI. + // Something like "xxxx@identi.ca Send email ..". Needs improvement. $this->element('span', 'input_instructions', + // TRANS: Form instructions for incoming e-mail form in e-mail settings. _('Send email to this address to post new notices.')); $this->elementEnd('p'); - $this->submit('removeincoming', _('Remove')); + // TRANS: Button label for removing a set sender e-mail address to post notices from. + $this->submit('removeincoming', _m('BUTTON','Remove')); } $this->elementStart('p'); - $this->element('span', 'input_instructions', - _('Make a new email address for posting to; '. - 'cancels the old one.')); + if ($user->incomingemail) { + // TRANS: Instructions for incoming e-mail address input form, when an address has already been assigned. + $msg = _('Make a new email address for posting to; '. + 'cancels the old one.'); + } else { + // TRANS: Instructions for incoming e-mail address input form. + $msg = _('To send notices via email, we need to create a unique email address for you on this server:'); + } + $this->element('span', 'input_instructions', $msg); $this->elementEnd('p'); - $this->submit('newincoming', _('New')); + + // TRANS: Button label for adding an e-mail address to send notices from. + $this->submit('newincoming', _m('BUTTON','New')); + + $this->elementEnd('div'); // div#emailincoming + $this->elementEnd('fieldset'); } $this->elementStart('fieldset', array('id' => 'settings_email_preferences')); - $this->element('legend', null, _('Preferences')); + // TRANS: Form legend for e-mail preferences form. + $this->element('legend', null, _('Email preferences')); $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - $this->checkbox('emailnotifysub', - _('Send me notices of new subscriptions through email.'), - $user->emailnotifysub); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('emailnotifyfav', - _('Send me email when someone '. - 'adds my notice as a favorite.'), - $user->emailnotifyfav); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('emailnotifymsg', - _('Send me email when someone sends me a private message.'), - $user->emailnotifymsg); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('emailnotifyattn', - _('Send me email when someone sends me an "@-reply".'), - $user->emailnotifyattn); - $this->elementEnd('li'); - $this->elementStart('li'); - $this->checkbox('emailnotifynudge', - _('Allow friends to nudge me and send me an email.'), - $user->emailnotifynudge); - $this->elementEnd('li'); - if (common_config('emailpost', 'enabled')) { - $this->elementStart('li'); - $this->checkbox('emailpost', - _('I want to post notices by email.'), - $user->emailpost); - $this->elementEnd('li'); - } - $this->elementStart('li'); - $this->checkbox('emailmicroid', - _('Publish a MicroID for my email address.'), - $user->emailmicroid); - $this->elementEnd('li'); + + if (Event::handle('StartEmailFormData', array($this))) { + $this->elementStart('li'); + $this->checkbox('emailnotifysub', + // TRANS: Checkbox label in e-mail preferences form. + _('Send me notices of new subscriptions through email.'), + $user->emailnotifysub); + $this->elementEnd('li'); + $this->elementStart('li'); + $this->checkbox('emailnotifyfav', + // TRANS: Checkbox label in e-mail preferences form. + _('Send me email when someone '. + 'adds my notice as a favorite.'), + $user->emailnotifyfav); + $this->elementEnd('li'); + $this->elementStart('li'); + $this->checkbox('emailnotifymsg', + // TRANS: Checkbox label in e-mail preferences form. + _('Send me email when someone sends me a private message.'), + $user->emailnotifymsg); + $this->elementEnd('li'); + $this->elementStart('li'); + $this->checkbox('emailnotifyattn', + // TRANS: Checkbox label in e-mail preferences form. + _('Send me email when someone sends me an "@-reply".'), + $user->emailnotifyattn); + $this->elementEnd('li'); + $this->elementStart('li'); + $this->checkbox('emailnotifynudge', + // TRANS: Checkbox label in e-mail preferences form. + _('Allow friends to nudge me and send me an email.'), + $user->emailnotifynudge); + $this->elementEnd('li'); + $this->elementStart('li'); + $this->checkbox('emailmicroid', + // TRANS: Checkbox label in e-mail preferences form. + _('Publish a MicroID for my email address.'), + $user->emailmicroid); + $this->elementEnd('li'); + Event::handle('EndEmailFormData', array($this)); + } $this->elementEnd('ul'); - $this->submit('save', _('Save')); + // TRANS: Button label to save e-mail preferences. + $this->submit('save', _m('BUTTON','Save')); $this->elementEnd('fieldset'); $this->elementEnd('fieldset'); $this->elementEnd('form'); @@ -203,7 +258,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return Confirm_address Email address confirmation for user, or null */ - function getConfirmation() { $user = common_current_user(); @@ -229,7 +283,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function handlePost() { // CSRF protection @@ -253,6 +306,7 @@ class EmailsettingsAction extends AccountSettingsAction } else if ($this->arg('newincoming')) { $this->newIncoming(); } else { + // TRANS: Message given submitting a form with an unknown action in e-mail settings. $this->showForm(_('Unexpected form submission.')); } } @@ -262,44 +316,50 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function savePreferences() { - $emailnotifysub = $this->boolean('emailnotifysub'); - $emailnotifyfav = $this->boolean('emailnotifyfav'); - $emailnotifymsg = $this->boolean('emailnotifymsg'); - $emailnotifynudge = $this->boolean('emailnotifynudge'); - $emailnotifyattn = $this->boolean('emailnotifyattn'); - $emailmicroid = $this->boolean('emailmicroid'); - $emailpost = $this->boolean('emailpost'); + $user = common_current_user(); - $user = common_current_user(); + if (Event::handle('StartEmailSaveForm', array($this, &$user))) { - assert(!is_null($user)); // should already be checked + $emailnotifysub = $this->boolean('emailnotifysub'); + $emailnotifyfav = $this->boolean('emailnotifyfav'); + $emailnotifymsg = $this->boolean('emailnotifymsg'); + $emailnotifynudge = $this->boolean('emailnotifynudge'); + $emailnotifyattn = $this->boolean('emailnotifyattn'); + $emailmicroid = $this->boolean('emailmicroid'); + $emailpost = $this->boolean('emailpost'); - $user->query('BEGIN'); + assert(!is_null($user)); // should already be checked - $original = clone($user); + $user->query('BEGIN'); - $user->emailnotifysub = $emailnotifysub; - $user->emailnotifyfav = $emailnotifyfav; - $user->emailnotifymsg = $emailnotifymsg; - $user->emailnotifynudge = $emailnotifynudge; - $user->emailnotifyattn = $emailnotifyattn; - $user->emailmicroid = $emailmicroid; - $user->emailpost = $emailpost; + $original = clone($user); - $result = $user->update($original); + $user->emailnotifysub = $emailnotifysub; + $user->emailnotifyfav = $emailnotifyfav; + $user->emailnotifymsg = $emailnotifymsg; + $user->emailnotifynudge = $emailnotifynudge; + $user->emailnotifyattn = $emailnotifyattn; + $user->emailmicroid = $emailmicroid; + $user->emailpost = $emailpost; - if ($result === false) { - common_log_db_error($user, 'UPDATE', __FILE__); - $this->serverError(_('Couldn\'t update user.')); - return; - } + $result = $user->update($original); - $user->query('COMMIT'); + if ($result === false) { + common_log_db_error($user, 'UPDATE', __FILE__); + // TRANS: Server error thrown on database error updating e-mail preferences. + $this->serverError(_('Could not update user.')); + return; + } + + $user->query('COMMIT'); + + Event::handle('EndEmailSaveForm', array($this)); - $this->showForm(_('Preferences saved.'), true); + // TRANS: Confirmation message for successful e-mail preferences save. + $this->showForm(_('Email preferences saved.'), true); + } } /** @@ -307,7 +367,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function addAddress() { $user = common_current_user(); @@ -317,6 +376,7 @@ class EmailsettingsAction extends AccountSettingsAction // Some validation if (!$email) { + // TRANS: Message given saving e-mail address without having provided one. $this->showForm(_('No email address.')); return; } @@ -324,16 +384,20 @@ class EmailsettingsAction extends AccountSettingsAction $email = common_canonical_email($email); if (!$email) { - $this->showForm(_('Cannot normalize that email address')); + // TRANS: Message given saving e-mail address that cannot be normalised. + $this->showForm(_('Cannot normalize that email address.')); return; } if (!Validate::email($email, common_config('email', 'check_domain'))) { - $this->showForm(_('Not a valid email address')); + // TRANS: Message given saving e-mail address that not valid. + $this->showForm(_('Not a valid email address.')); return; } else if ($user->email == $email) { + // TRANS: Message given saving e-mail address that is already set. $this->showForm(_('That is already your email address.')); return; } else if ($this->emailExists($email)) { + // TRANS: Message given saving e-mail address that is already set for another user. $this->showForm(_('That email address already belongs '. 'to another user.')); return; @@ -350,12 +414,14 @@ class EmailsettingsAction extends AccountSettingsAction if ($result === false) { common_log_db_error($confirm, 'INSERT', __FILE__); - $this->serverError(_('Couldn\'t insert confirmation code.')); + // TRANS: Server error thrown on database error adding e-mail confirmation code. + $this->serverError(_('Could not insert confirmation code.')); return; } mail_confirm_address($user, $confirm->code, $user->nickname, $email); + // TRANS: Message given saving valid e-mail address that is to be confirmed. $msg = _('A confirmation code was sent to the email address you added. '. 'Check your inbox (and spam box!) for the code and instructions '. 'on how to use it.'); @@ -368,7 +434,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function cancelConfirmation() { $email = $this->arg('email'); @@ -376,11 +441,13 @@ class EmailsettingsAction extends AccountSettingsAction $confirm = $this->getConfirmation(); if (!$confirm) { + // TRANS: Message given canceling e-mail address confirmation that is not pending. $this->showForm(_('No pending confirmation to cancel.')); return; } if ($confirm->address != $email) { - $this->showForm(_('That is the wrong IM address.')); + // TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address. + $this->showForm(_('That is the wrong email address.')); return; } @@ -388,11 +455,13 @@ class EmailsettingsAction extends AccountSettingsAction if (!$result) { common_log_db_error($confirm, 'DELETE', __FILE__); - $this->serverError(_('Couldn\'t delete email confirmation.')); + // TRANS: Server error thrown on database error canceling e-mail address confirmation. + $this->serverError(_('Could not delete email confirmation.')); return; } - $this->showForm(_('Confirmation cancelled.'), true); + // TRANS: Message given after successfully canceling e-mail address confirmation. + $this->showForm(_('Email confirmation cancelled.'), true); } /** @@ -400,7 +469,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function removeAddress() { $user = common_current_user(); @@ -410,6 +478,8 @@ class EmailsettingsAction extends AccountSettingsAction // Maybe an old tab open...? if ($user->email != $email) { + // TRANS: Message given trying to remove an e-mail address that is not + // TRANS: registered for the active user. $this->showForm(_('That is not your email address.')); return; } @@ -424,12 +494,14 @@ class EmailsettingsAction extends AccountSettingsAction if (!$result) { common_log_db_error($user, 'UPDATE', __FILE__); - $this->serverError(_('Couldn\'t update user.')); + // TRANS: Server error thrown on database error removing a registered e-mail address. + $this->serverError(_('Could not update user.')); return; } $user->query('COMMIT'); - $this->showForm(_('The address was removed.'), true); + // TRANS: Message given after successfully removing a registered e-mail address. + $this->showForm(_('The email address was removed.'), true); } /** @@ -437,12 +509,12 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function removeIncoming() { $user = common_current_user(); if (!$user->incomingemail) { + // TRANS: Form validation error displayed when trying to remove an incoming e-mail address while no address has been set. $this->showForm(_('No incoming email address.')); return; } @@ -450,12 +522,15 @@ class EmailsettingsAction extends AccountSettingsAction $orig = clone($user); $user->incomingemail = null; + $user->emailpost = 0; if (!$user->updateKeys($orig)) { common_log_db_error($user, 'UPDATE', __FILE__); - $this->serverError(_("Couldn't update user record.")); + // TRANS: Server error thrown on database error removing incoming e-mail address. + $this->serverError(_("Could not update user record.")); } + // TRANS: Message given after successfully removing an incoming e-mail address. $this->showForm(_('Incoming email address removed.'), true); } @@ -464,7 +539,6 @@ class EmailsettingsAction extends AccountSettingsAction * * @return void */ - function newIncoming() { $user = common_current_user(); @@ -472,12 +546,15 @@ class EmailsettingsAction extends AccountSettingsAction $orig = clone($user); $user->incomingemail = mail_new_incoming_address(); + $user->emailpost = 1; if (!$user->updateKeys($orig)) { common_log_db_error($user, 'UPDATE', __FILE__); - $this->serverError(_("Couldn't update user record.")); + // TRANS: Server error thrown on database error adding incoming e-mail address. + $this->serverError(_("Could not update user record.")); } + // TRANS: Message given after successfully adding an incoming e-mail address. $this->showForm(_('New incoming email address added.'), true); }