- Timestamp:
- 03/12/09 06:15:46 (9 months ago)
- Location:
- trunk
- Files:
-
- 15 modified
- 1 copied
-
default_templates/recover-password.mtml (modified) (1 diff)
-
lib/MT.pm (modified) (1 diff)
-
lib/MT/App/CMS.pm (modified) (1 diff)
-
lib/MT/App/Comments.pm (modified) (2 diffs)
-
lib/MT/Author.pm (modified) (1 diff)
-
lib/MT/CMS/Tools.pm (modified) (4 diffs)
-
lib/MT/L10N/de.pm (modified) (1 diff)
-
lib/MT/L10N/en_us.pm (modified) (1 diff)
-
lib/MT/L10N/es.pm (modified) (1 diff)
-
lib/MT/L10N/fr.pm (modified) (1 diff)
-
lib/MT/L10N/ja.pm (modified) (8 diffs)
-
lib/MT/L10N/nl.pm (modified) (1 diff)
-
lib/MT/Upgrade/v4.pm (modified) (2 diffs)
-
tmpl/cms/dialog/new_password.tmpl (copied) (copied from branches/mt4.24/tmpl/cms/dialog/new_password.tmpl)
-
tmpl/cms/dialog/recover.tmpl (modified) (3 diffs)
-
tmpl/comment/login.tmpl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/default_templates/recover-password.mtml
r2603 r3530 1 <__trans phrase=" _USAGE_FORGOT_PASSWORD_1">1 <__trans phrase="A request has been made to change your password in Movable Type. To complete this process click on the link below to select a new password."> 2 2 3 <$mt:Var name="user_password"$>3 <mt:var name="link_to_login"> 4 4 5 <__trans phrase=" _USAGE_FORGOT_PASSWORD_2">5 <__trans phrase="If you did not request this change, you can safely ignore this email."> 6 6 7 <$mt:Var name="link_to_login"$> 8 9 <$mt:Include module="<__trans phrase="Mail Footer">"$> 10 7 <mt:include module="<__trans phrase="Mail Footer">"> -
trunk/lib/MT.pm
r3529 r3530 2036 2036 } 2037 2037 undef; 2038 } 2039 2040 sub load_global_tmpl { 2041 my $app = shift; 2042 my ( $arg, $blog_id ) = @_; 2043 $blog_id ||= '0'; 2044 2045 my $terms = {}; 2046 if ( 'HASH' eq ref($arg) ) { 2047 $terms = { %$arg, blog_id => $blog_id }; 2048 } 2049 else { 2050 $terms = { 2051 type => $arg, 2052 blog_id => $blog_id, 2053 } 2054 } 2055 require MT::Template; 2056 my $tmpl = MT::Template->load( $terms ); 2057 $app->set_default_tmpl_params($tmpl) if $tmpl; 2058 $tmpl; 2038 2059 } 2039 2060 -
trunk/lib/MT/App/CMS.pm
r3529 r3530 141 141 'recover' => { 142 142 code => "${pkg}Tools::recover_password", 143 requires_login => 0, 144 }, 145 'new_pw' => { 146 code => "${pkg}Tools::new_password", 143 147 requires_login => 0, 144 148 }, -
trunk/lib/MT/App/Comments.pm
r3529 r3530 40 40 red => \&do_red, 41 41 generate_captcha => \&generate_captcha, 42 43 start_recover => \&start_recover, 44 recover => \&recover, 45 new_pw => \&new_pw, 42 46 43 47 # deprecated … … 1889 1893 } 1890 1894 1895 sub start_recover { 1896 require MT::CMS::Tools; 1897 MT::CMS::Tools::start_recover(@_); 1898 } 1899 1900 sub recover { 1901 require MT::CMS::Tools; 1902 MT::CMS::Tools::recover_password(@_); 1903 } 1904 1905 sub new_pw { 1906 require MT::CMS::Tools; 1907 MT::CMS::Tools::new_password(@_); 1908 } 1909 1891 1910 1; 1892 1911 __END__ -
trunk/lib/MT/Author.pm
r2694 r3530 42 42 'widgets' => 'hash meta', 43 43 'favorite_blogs' => 'array meta', 44 'password_reset' => 'string meta', 45 'password_reset_expires' => 'string meta', 46 'password_reset_return_to' => 'string meta', 44 47 }, 45 48 defaults => { -
trunk/lib/MT/CMS/Tools.pm
r3219 r3530 107 107 sub start_recover { 108 108 my $app = shift; 109 my ($param) = @_; 110 $param ||= {}; 111 $param->{'email'} = $app->param('email'); 112 $param->{'return_to'} = $app->param('return_to'); 109 113 $app->add_breadcrumb( $app->translate('Password Recovery') ); 110 $app->load_tmpl('dialog/recover.tmpl'); 114 115 my $blog_id = $app->param('blog_id'); 116 my $tmpl = $app->load_global_tmpl( { identifier => 'new_password_reset_form', 117 $blog_id ? ( blog_id => $app->param('blog_id') ) : () } ); 118 if (!$tmpl) { 119 $tmpl = $app->load_tmpl( 'cms/dialog/recover.tmpl' ); 120 } 121 $tmpl->param($param); 122 return $tmpl; 111 123 } 112 124 113 125 sub recover_password { 114 my $app = shift; 115 my $q = $app->param; 116 my $name = $q->param('name'); 117 my $class = ref $app eq 'MT::App::Upgrader' ? 'MT::BasicAuthor' : $app->model('author'); 126 my $app = shift; 127 my $email = $app->param('email'); 128 my $username = $app->param('name'); 129 130 if ( !$email ) { 131 return $app->start_recover( 132 { error => $app->translate('Email Address is required for password recovery.'), } ); 133 } 134 135 # Searching user by email (and username) 136 my $class 137 = ref $app eq 'MT::App::Upgrader' 138 ? 'MT::BasicAuthor' 139 : $app->model('author'); 118 140 eval "use $class;"; 119 my @author = $class->load( { name => $name } ); 120 my $author; 121 foreach (@author) { 141 142 my @all_authors = $class->load( 143 { email => $email, ( $username ? ( name => $username ) : () ) } ); 144 my @authors; 145 my $user; 146 foreach (@all_authors) { 122 147 next unless $_->password && ( $_->password ne '(none)' ); 123 $author = $_; 124 } 125 126 my ( $rc, $res ) = 127 reset_password( $app, $author, $q->param('hint'), $name ); 128 129 if ($rc) { 130 $app->add_breadcrumb( $app->translate('Password Recovery') ); 131 $app->load_tmpl( 132 'dialog/recover.tmpl', 133 { 134 recovered => 1, 135 email => $author->email 148 push( @authors, $_ ); 149 } 150 if ( !@authors ) { 151 return $app->start_recover( 152 { error => $app->translate('User not found'), 153 ( $username ? ( not_unique_email => 1 ) : () ), 136 154 } 137 155 ); 138 156 } 139 else { 140 $app->error($res); 141 } 157 elsif ( @authors > 1 ) { 158 return $app->start_recover( { not_unique_email => 1, } ); 159 } 160 $user = pop @authors; 161 162 # Generate Token 163 require MT::Util::Captcha; 164 my $salt = MT::Util::Captcha->_generate_code(8); 165 my $expires = time + ( 60 * 60 ); 166 my $token = MT::Util::perl_sha1_digest_hex( 167 $salt . $expires . $app->config->SecretToken ); 168 169 $user->password_reset($salt); 170 $user->password_reset_expires($expires); 171 $user->password_reset_return_to($app->param('return_to')) 172 if $app->param('return_to'); 173 $user->save; 174 175 # Send mail to user 176 my %head = ( 177 id => 'recover_password', 178 To => $email, 179 From => $app->config('EmailAddressMain') || $email, 180 Subject => $app->translate("Password Recovery") 181 ); 182 my $charset = $app->charset; 183 my $mail_enc = uc( $app->config('MailEncoding') || $charset ); 184 $head{'Content-Type'} = qq(text/plain; charset="$mail_enc"); 185 186 my $body = $app->build_email( 187 'recover-password', 188 { link_to_login => $app->base 189 . $app->uri 190 . "?__mode=new_pw&token=$token&email=" 191 . encode_url($email), 192 } 193 ); 194 195 require MT::Mail; 196 MT::Mail->send( \%head, $body ) 197 or return $app->error( 198 $app->translate( 199 "Error sending mail ([_1]); please fix the problem, then " 200 . "try again to recover your password.", 201 MT::Mail->errstr 202 ) 203 ); 204 205 return $app->start_recover( { recovered => 1, } ); 206 } 207 208 sub new_password { 209 my $app = shift; 210 my ($param) = @_; 211 $param ||= {}; 212 213 my $token = $app->param('token'); 214 if ( !$token ) { 215 return $app->start_recover( 216 { error => $app->translate('Password reset token not found'), } ); 217 } 218 219 my $email = $app->param('email'); 220 if ( !$token ) { 221 return $app->start_recover( 222 { error => $app->translate('Email address not found'), } ); 223 } 224 225 my $class = $app->model('author'); 226 my @users = $class->load( { email => $email } ); 227 if ( !@users ) { 228 return $app->start_recover( 229 { error => $app->translate('User not found'), } ); 230 } 231 232 # comparing token 233 require MT::Util::Captcha; 234 my $user; 235 for my $u (@users) { 236 my $salt = $u->password_reset; 237 my $expires = $u->password_reset_expires; 238 my $compare = MT::Util::perl_sha1_digest_hex( 239 $salt . $expires . $app->config->SecretToken ); 240 if ( $compare eq $token ) { 241 if ( time > $u->password_reset_expires ) { 242 return $app->start_recover( 243 { error => $app->translate( 244 'Your request to change your password has expired.' 245 ), 246 } 247 ); 248 } 249 $user = $u; 250 last; 251 } 252 } 253 254 if ( !$user ) { 255 return $app->start_recover( 256 { error => $app->translate('Invalid password reset request'), } ); 257 } 258 259 # Password reset 260 my $new_password = $app->param('password'); 261 if ($new_password) { 262 my $again = $app->param('password_again'); 263 if ( !$again ) { 264 $param->{'error'} 265 = $app->translate('Please confirm your new password'); 266 } 267 elsif ( $new_password ne $again ) { 268 $param->{'error'} = $app->translate('Passwords do not match'); 269 } 270 else { 271 my $redirect = $user->password_reset_return_to || ''; 272 $user->set_password($new_password); 273 $user->password_reset(undef); 274 $user->password_reset_expires(undef); 275 $user->password_reset_return_to(undef); 276 $user->save; 277 $app->param( 'username', $user->name ) 278 if $user->type == MT::Author::AUTHOR(); 279 $app->login; 280 if ($redirect) { 281 return $app->redirect($redirect); 282 } else{ 283 return $app->return_to_dashboard( redirect => 1 ); 284 } 285 } 286 } 287 288 $param->{'email'} = $email; 289 $param->{'token'} = $token; 290 $param->{'password'} = $app->param('password'); 291 $param->{'password_again'} = $app->param('password_again'); 292 $app->add_breadcrumb( $app->translate('Password Recovery') ); 293 294 my $blog_id = $app->param('blog_id'); 295 my $tmpl = $app->load_global_tmpl( { identifier => 'new_password', 296 $blog_id ? ( blog_id => $app->param('blog_id') ) : () } ); 297 if (!$tmpl) { 298 $tmpl = $app->load_tmpl( 'cms/dialog/new_password.tmpl' ); 299 } 300 $tmpl->param($param); 301 return $tmpl; 142 302 } 143 303 … … 1531 1691 unless $author->email; 1532 1692 1533 my @pool = ( 'a' .. 'z', 0 .. 9 ); 1534 my $pass = ''; 1535 for ( 1 .. 8 ) { $pass .= $pool[ rand @pool ] } 1536 $author->set_password($pass); 1693 # Generate Token 1694 require MT::Util::Captcha; 1695 my $salt = MT::Util::Captcha->_generate_code(8); 1696 my $expires = time + ( 60 * 60 ); 1697 my $token = MT::Util::perl_sha1_digest_hex( 1698 $salt . $expires . $app->config->SecretToken ); 1699 1700 $author->password_reset($salt); 1701 $author->password_reset_expires($expires); 1702 $author->password_reset_return_to(undef); 1537 1703 $author->save; 1704 1538 1705 my $message = 1539 1706 $app->translate( 1540 " Password was reset for user '[_1]' (user #[_2]). Password was sent to the following address: [_3]",1707 "A password reset link has been sent to [_3] for user '[_1]' (user #[_2]).", 1541 1708 $author->name, $author->id, $author->email ); 1542 1709 $app->log( … … 1549 1716 ); 1550 1717 1551 my $address = 1552 defined $author->nickname 1553 ? $author->nickname . ' <' . $author->email . '>' 1554 : $author->email; 1718 # Send mail to user 1719 my $email = $author->email; 1555 1720 my %head = ( 1556 1721 id => 'recover_password', 1557 To => $ address,1558 From => $app->config('EmailAddressMain') || $ address,1722 To => $email, 1723 From => $app->config('EmailAddressMain') || $email, 1559 1724 Subject => $app->translate("Password Recovery") 1560 1725 ); … … 1563 1728 $head{'Content-Type'} = qq(text/plain; charset="$mail_enc"); 1564 1729 1565 my $body = $app->build_email( 'recover-password.tmpl', 1566 { user_password => $pass, link_to_login => $app->base . $app->mt_uri } 1730 my $body = $app->build_email( 1731 'recover-password', 1732 { link_to_login => $app->base 1733 . $app->uri 1734 . "?__mode=new_pw&token=$token&email=" 1735 . encode_url($email), 1736 } 1567 1737 ); 1568 $body = wrap_text( $body, 72 ); 1738 1569 1739 require MT::Mail; 1570 1740 MT::Mail->send( \%head, $body ) 1571 or return ( 1572 0, 1741 or return $app->error( 1573 1742 $app->translate( 1574 1743 "Error sending mail ([_1]); please fix the problem, then " 1575 . "try again to recover your password.",1744 . "try again to recover your password.", 1576 1745 MT::Mail->errstr 1577 1746 ) 1578 ); 1747 ); 1748 1579 1749 ( 1, $message ); 1580 1750 } -
trunk/lib/MT/L10N/de.pm
r2923 r3530 5230 5230 'Upgrade to Feeds.App' => 'Upgrade auf Feeds.App', 5231 5231 'Create a Feed Widget' => 'Feed-Widget anlegen', 5232 5232 5233 '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New 5234 '[_1] contains an invalid character: [_2]' => '[_1] beinhaltet ein ungÃŒltiges Schriftzeichen: [_2]', # Translate - New 5235 'Email address is required.' => 'Bitte geben Sie Ihre E-Mail-Adresse ein.', # Translate - New 5236 'User not found' => 'Dieser Benutzer wurde nicht gefunden', # Translate - New 5237 'Password reset token not found' => 'Der Passwort Reset Token wurde nicht gefunden', # Translate - New 5238 'Email address not found' => 'Diese E-Mail-Adresse wurde nicht gefunden', # Translate - New 5239 'Your request to change your password has expired.' => 'Ihre Anfrage auf Ãnderung Ihres Passwortes ist ausgelaufen.', # Translate - New 5240 'Invalid password reset request' => 'UngÃŒltige Passwort Reset Anfrage', # Translate - New 5241 'Please confirm your new password' => 'Bitte bestÀtigen Sie Ihr neues Passwort', # Translate - New 5242 'Password do not match' => 'Die Passwörter stimmen nicht ÃŒberein', # Translate - New 5243 'Invalid [_1] parameter.' => 'UngÃŒltiger [_1] Parameter.', # Translate - New 5244 'Blog, BlogID or Template param must be specified.' => 'Blog, BlogID oder Template Parameter mÃŒssen spezifiziert werden.', # Translate - New 5245 'Error saving [_1] record # [_3]: [_2]...' => 'Error saving [_1] record # [_3]: [_2]...', # Translate - New 5246 'The email address provided is not unique. Please enter your username.' => 'Diese E-Mail-Adresse wird bereits verwendet. Bitte geben Sie Ihren Benutzernamen ein.', # Translate - New 5247 'An email with a link to reset your password has been sent to your email address ([_1]).' => 'Es wurde eine E-Mail mit einem Link zur ZurÃŒcksetzung Ihres Passwortes an Ihre Adresse gesendet([_1]).', # Translate - New 5248 'Choose New Password' => 'WÀhlen Sie Ihr neues Passwort', # Translate - New 5249 'You must set Local Archive Path.' => 'Bitte definieren Sie Ihren Local Archive Path.', # Translate - New 5250 'You must set a valid Archive URL.' => 'Bitte definieren Sie eine gÃŒltige Archive URL.', # Translate - New 5251 'You must set a valid Local Archive Path.' => 'Bitte definieren Sie einen gÃŒltigen Local Archive Path.', # Translate - New 5252 'A request has been made to change your password in Movable Type. To complete this process click on the link below to select a new password.' => 'Es wurde eine Anfrage zur Ãnderung Ihres Passwortes in Movable Type gestellt. Bitte klicken Sie auf untenstehenden Link und wÀhlen Sie ein neues Passwort aus um diesen Prozess abzuschlieÃen.', 5253 'If you did not request this change, you can safely ignore this email.' => 'Wenn Sie diese Ãnderung nicht wÃŒnschen können Sie diese E-Mail bedenkenlos ignorieren.', 5254 'Passwords do not match' => 'Passwörter stimmen nicht ÃŒberein.', 5255 'Password reset for user \'[_1]\' (user #[_2]) was successful. Recovery link sent to the following address: [_3]' => 'Das ZurÃŒcksetzen des Passwortes fÃŒr Benutzer \'[_1]\' (Benutzer #[_2]) war erfolgreich. Ein Wiederherstellungs-Link wurde an folgende Adresse gesendet', 5256 'Updating password recover email template...' => 'Aktualisierung des Passwort-Wiederherstellungs-Templates...', 5257 'The email address provided is not unique. Please enter your username.' => 'Die angegebene E-Mail-Adresse wird bereits genutzt. Bitte geben Sie Ihren Benutzernamen ein.', 5258 '_WARNING_PASSWORD_RESET_MULTI' => 'Sie sind dabei Email(s) an ausgewÀhlte Nutzer zu senden um deren Password zurÃŒck zu setzen. Möchten Sie fortfahren?', 5259 "A password reset link has been sent to [_3] for user '[_1]' (user #[_2])." => 'Ein Passwort-Wiederherstellungs-Link fÃŒr den Benutzer \'[_1]\' wurde an [_3] gesendet. (Benutzer #[_2])' 5233 5260 ); 5234 5261 -
trunk/lib/MT/L10N/en_us.pm
r2835 r3530 59 59 '_USAGE_PASSWORD_RESET' => 'You can initiate password recovery on behalf of this user. If you choose to do so, an email will be sent to directly to <strong>[_1]</strong> with a randomly generated new password.', 60 60 '_WARNING_PASSWORD_RESET_SINGLE' => 'You are about to reset the password for "[_1]". A new password will be randomly generated and sent directly to their email address ([_2]). Do you wish to continue?', 61 '_WARNING_PASSWORD_RESET_MULTI' => 'You are about to reset the password for the selected users. New passwords will be randomly generated and sent directly to their email address(es).Do you wish to continue?',61 '_WARNING_PASSWORD_RESET_MULTI' => 'You are about to send email(s) to allow the selected user(s) to reset their passwords. Do you wish to continue?', 62 62 '_USAGE_NEW_AUTHOR' => 'From this screen you can create a new user in the system.', 63 63 '_USAGE_NEW_GROUP' => 'From this screen you can create a new group in the system.', -
trunk/lib/MT/L10N/es.pm
r2923 r3530 5229 5229 'Create a Feed Widget' => 'Crear un widget de fuente', 5230 5230 5231 'A request has been made to change your password in Movable Type. To complete this process click on the link below to select a new password.' => 'Se ha recibido una petición para cambiar su contraseña de Movable Type. Para completar el proceso y seleccionar una nueva contraseña, haga clic en el enlace.', # Translate - New 5232 'If you did not request this change, you can safely ignore this email.' => 'Si no solicitó este cambio, ignore este mensaje.', # Translate - New 5233 '%f-thumb-%wx%h-%i%x' => '%f-miniatura-%wx%h-%i%x', # Translate - New 5234 '[_1] contains an invalid character: [_2]' => '[_1] contiene un caracter no válido: [_2]', # Translate - New 5235 'Email address is required.' => 'El correo electrónico es obligatorio.', # Translate - New 5236 'User not found' => 'Usuario no encontrado', # Translate - New 5237 'Password reset token not found' => 'Token para el reinicio de la contraseña no encontrado', # Translate - New 5238 'Email address not found' => 'Dirección de correo no encontrada', # Translate - New 5239 'Your request to change your password has expired.' => 'Expiró su solicitud de cambio de contraseña.', # Translate - New 5240 'Invalid password reset request' => 'Solicitud de reinicio de contraseña no válida', # Translate - New 5241 'Please confirm your new password' => 'Por favor, confirme su nueva contraseña', # Translate - New 5242 'Password do not match' => 'La contraseña no coincide', # Translate - New 5243 'Invalid [_1] parameter.' => 'Parámetro [_1] no válido', # Translate - New 5244 'Blog, BlogID or Template param must be specified.' => 'Debe especificarse el parámetro Blog, BlogID o Template.', # Translate - New 5245 'Error saving [_1] record # [_3]: [_2]...' => 'Error guardando registro [_1] # [_3]: [_2]...', # Translate - New 5246 'The email address provided is not unique. Please enter your username.' => 'El correo no es único. Por favor, introduzca el usuario.', # Translate - New 5247 'An email with a link to reset your password has been sent to your email address ([_1]).' => 'Se ha enviado a su dirección de correo ([_1]) un correo con el enlace para reiniciar la contraseña', # Translate - New 5248 'Choose New Password' => 'Seleccione la nueva contraseña', # Translate - New 5249 'You must set Local Archive Path.' => 'Debe indicar la ruta local de archivos.', # Translate - New 5250 'You must set a valid Archive URL.' => 'Debe indicar una URL de archivos válida.', # Translate - New 5251 'You must set a valid Local Archive Path.' => 'Debe indicar una ruta local de archivos válida.', # Translate - New 5252 5231 5253 ); 5232 5254 -
trunk/lib/MT/L10N/fr.pm
r2923 r3530 5230 5230 'Create a Feed Widget' => 'Créer un widget à partir d\'un flux', 5231 5231 5232 'A request has been made to change your password in Movable Type. To complete this process click on the link below to select a new password.' => 'Une requête a été faite pour changer votre mot de passe dans Movable Type. Pour terminer cliquez sur le lien ci-dessous pour choisir un nouveau mot de passe.', # Translate - New 5233 'If you did not request this change, you can safely ignore this email.' => 'Si vous n\'avez pas demandé ce changement, vous pouvez ignorer cet email.', # Translate - New 5234 '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New 5235 '[_1] contains an invalid character: [_2]' => '[_1] contient un caractÚre invalide : [_2]', # Translate - New 5236 'Email address is required.' => 'Adresse email obligatoire', # Translate - New 5237 'User not found' => 'Utilisateur introuvable', # Translate - New 5238 'Password reset token not found' => 'Token de remise à zéro du mot de passe introuvable', # Translate - New 5239 'Email address not found' => 'Adresse email introuvable', # Translate - New 5240 'Your request to change your password has expired.' => 'Votre demande de modification de mot de passe a expirée.', # Translate - New 5241 'Invalid password reset request' => 'Requête de modification de mot de passe invalide', # Translate - New 5242 'Please confirm your new password' => 'Merci de confirmer votre nouveau mot de passe', # Translate - New 5243 'Password do not match' => 'Le mot de passe ne correspond pas', # Translate - New 5244 'Invalid [_1] parameter.' => 'ParamÚtre [_1] invalide', # Translate - New 5245 'Blog, BlogID or Template param must be specified.' => 'Les paramÚtres Blog, BlogID ou Template doivent être spécifiés.', # Translate - New 5246 'Error saving [_1] record # [_3]: [_2]...' => 'Erreur en enregistrant l\'enregistrement [_1] # [_3]: [_2]...', # Translate - New 5247 'The email address provided is not unique. Please enter your username.' => 'Une adresse email n\'est pas unique. Merci de saisir votre nom de membre.', # Translate - New 5248 'An email with a link to reset your password has been sent to your email address ([_1]).' => 'Un email contenant un lien pour réinitialiser votre mot de passe a été envoyé à votre adresse email ([_1]).', # Translate - New 5249 'Choose New Password' => 'Choisissez un nouveau mot de passe', # Translate - New 5250 'You must set Local Archive Path.' => 'Vous devez renseigner Local Archive Path.', # Translate - New 5251 'You must set a valid Archive URL.' => 'Vous devez renseigner une Archive URL valide.', # Translate - New 5252 'You must set a valid Local Archive Path.' => 'Vous devez renseigner un Local Archive Path valide.', # Translate - New 5253 'Passwords do not match' => 'Les mots de passe ne correspondent pas', # Translate - New 5254 'Password reset for user \'[_1]\' (user #[_2]) was successful. Recovery link sent to the following address: [_3]' => 'Réinitialisation du mot de passe pour l\'utilisateur \'[_1]\' (utilisateur #[_2]) a réussi. Lien envoyé à l\'adresse suivante : [_3]', # Translate - New 5255 'Updating password recover email template...' => 'Template de réinitialisation du mot de passe en cours de mise à jour...', # Translate - New 5256 'The email address provided is not unique. Please enter your username.' => 'L\'adresse email fournie n\'est pas unique. Merci de saisir votre nom d\'utilisateur.', # Translate - New 5257 '_WARNING_PASSWORD_RESET_MULTI' => 'Vous êtes sur le point d\'envoyer des emails pour permettre aux utilisateurs sélectionnés de réinitialiser leurs mots de passe. Voulez-vous continuer ?', 5258 "A password reset link has been sent to [_3] for user '[_1]' (user #[_2])." => 'Un lien de réinitialisation de mot de passe envoyé à [_3] pour utilisateur \'[_1]\' (utilisateur #[_2]).', 5232 5259 ); 5233 5260 -
trunk/lib/MT/L10N/ja.pm
r3219 r3530 403 403 '_USAGE_FORGOT_PASSWORD_2' => '以äžã®URLãããæ°ãããã¹ã¯ãŒãã䜿ã£ãŠMovable Typeã«ãã°ã€ã³ããããã«ãã¹ã¯ãŒãã倿ŽããŠãã ããã', 404 404 'Mail Footer' => 'ã¡ãŒã«ããã¿ãŒ', 405 'A request has been made to change your password in Movable Type. To complete this process click on the link below to select a new password.' => 'ãã¹ã¯ãŒãããªã»ããããããšããŠããŸãã以äžã®ãªã³ã¯ãã¯ãªãã¯ããŠãæ°ãããã¹ã¯ãŒããèšå®ããŠãã ããã', 406 'If you did not request this change, you can safely ignore this email.' => 'ãã®ã¡ãŒã«ã«å¿åœããããªããšãã¯ãäœãããã«ç¡èŠããŠãã ããã', 405 407 406 408 ## default_templates/main_index.mtml … … 1024 1026 ## lib/MT/CMS/Tools.pm 1025 1027 'Password Recovery' => 'ãã¹ã¯ãŒãã®åèšå®', 1028 'Email Address is required for password recovery.' => 'ã¡ãŒã«ã¢ãã¬ã¹ãå¿ 1029 èŠã§ãã', 1030 'User not found' => 'ãŠãŒã¶ãŒãèŠã€ãããŸããã§ããã', 1031 'Error sending mail ([_1]); please fix the problem, then try again to recover your password.' => 'ã¡ãŒã«ãéä¿¡ã§ããŸããã§ãããåé¡ã解決ããŠããå床ãã¹ã¯ãŒãã®åèšå®ãè¡ã£ãŠãã ãã: [_1]', 1032 'Password reset token not found' => 'ãã¹ã¯ãŒãããªã»ããããããã®ããŒã¯ã³ãèŠã€ãããŸããã§ããã', 1033 'Email address not found' => 'ã¡ãŒã«ã¢ãã¬ã¹ãèŠã€ãããŸããã§ããã', 1034 'Your request to change your password has expired.' => 'ãã¹ã¯ãŒãã®ãªã»ãããå§ããŠããæ±ºããããæéãçµéããŠããŸããŸããã', 1035 'Invalid password reset request' => 'äžæ£ãªãªã¯ãšã¹ãã§ãã', 1036 'Please confirm your new password' => 'æ°ãããã¹ã¯ãŒãã確èªããŠãã ããã', 1037 'Passwords do not match' => 'ãã¹ã¯ãŒããäžèŽããŠããŸããã', 1026 1038 'That action ([_1]) is apparently not implemented!' => 'ã¢ã¯ã·ã§ã³([_1])ãå®è£ 1027 1039 ãããŠããŸããã', … … 1074 1086 'Invalid attempt to recover password (used hint \'[_1]\')' => 'ãã¹ã¯ãŒãã®åèšå®ã«å€±æããŸãã(ãã¬ãŒãº: [_1])ã', 1075 1087 'User does not have email address' => 'ãŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ããããŸããã', 1076 ' Password was reset for user \'[_1]\' (user #[_2]). Password was sent to the following address: [_3]' => 'ãŠãŒã¶ãŒ\'[_1]\'(ID:[_2])ã®ãã¹ã¯ãŒãããªã»ãããããã¡ãŒã«ã¢ãã¬ã¹([_3])ããŠã«éç¥ãããŸããã',1088 'A password reset link has been sent to [_3] for user \'[_1]\' (user #[_2]).' => 'ãã¹ã¯ãŒãåèšå®çšã®ãªã³ã¯ããŠãŒã¶ãŒ\'[_1]\'(ID:[_2])ã®ã¡ãŒã«ã¢ãã¬ã¹([_3])ããŠã«éç¥ãããŸããã', 1077 1089 'Error sending mail ([_1]); please fix the problem, then try again to recover your password.' => 'ã¡ãŒã«ãéä¿¡ã§ããŸããã§ãããåé¡ã解決ããŠããå床ãã¹ã¯ãŒãã®åèšå®ãè¡ã£ãŠãã ãã: [_1]', 1078 1090 'Some objects were not restored because their parent objects were not restored. Detailed information is in the <a href="javascript:void(0);" onclick="closeDialog(\'[_1]\');">activity log</a>.' => '芪ãšãªããªããžã§ã¯ãããªãããåŸ©å … … 1935 1947 ã®æš©éã埩å 1936 1948 ããŠããŸã...', 1949 'Updating password recover email template...' => 'ãã¹ã¯ãŒãã®åèšå®ïŒã¡ãŒã« ãã³ãã¬ãŒãïŒãæŽæ°ããŠããŸã...', 1937 1950 1938 1951 ## lib/MT/PluginData.pm … … 2059 2072 2060 2073 ## lib/MT/App/CMS.pm 2061 '_WARNING_PASSWORD_RESET_MULTI' => 'éžæããããŠãŒã¶ãŒã®ãã¹ã¯ãŒããåèšå®ããããšããŠããŸãããã¹ã¯ãŒã ã¯ã©ã³ãã ã«çæãããçŽæ¥ããããã®ã¡ãŒã«ã¢ãã¬ã¹ã«éãããŸãã2074 '_WARNING_PASSWORD_RESET_MULTI' => 'éžæããããŠãŒã¶ãŒã®ãã¹ã¯ãŒããåèšå®ããããšããŠããŸãããã¹ã¯ãŒãåèšå®çšã®ãªã³ã¯ãçŽæ¥ããããã®ã¡ãŒã«ã¢ãã¬ã¹ã«éãããŸãã 2062 2075 2063 2076 å®è¡ããŸãã?', … … 2235 2248 2236 2249 ## lib/MT/App/Search.pm 2250 'Invalid [_1] parameter.' => '[_1]ãã©ã¡ãŒã¿ãäžæ£ã§ãã', 2237 2251 'Invalid type: [_1]' => 'äžæ£ãªtypeã§ã: [_1]', 2238 2252 'Search: failed storing results in cache. [_1] is not available: [_2]' => 'çµæããã£ãã·ã¥ã§ããŸããã§ããã[_1]ãå©çšã§ããŸãã: [_2]', … … 4615 4629 'Are you sure you wish to continue?' => 'ç¶ããŠãããããã§ãã?', 4616 4630 4631 ## tmpl/cms/dialog/new_password.tmpl 4632 'Choose New Password' => 'æ°ãããã¹ã¯ãŒããéžæ', 4633 4617 4634 ## tmpl/cms/dialog/refresh_templates.tmpl 4618 4635 'Refresh Template Set' => 'ãã³ãã¬ãŒãã»ããã®åæå', … … 4654 4671 4655 4672 ## tmpl/cms/dialog/recover.tmpl 4673 'The email address provided is not unique. Please enter your username.' => 'åãã¡ãŒã«ã¢ãã¬ã¹ãæã£ãŠãããŠãŒã¶ãŒãããŸãããŠãŒã¶ãŒåãå 4674 ¥åããŠãã ããã', 4675 'An email with a link to reset your password has been sent to your email address ([_1]).' => 'ã[_1]ãã«ãã¹ã¯ãŒãããªã»ããããããã®ãªã³ã¯ãå«ãã¡ãŒã«ãéä¿¡ããŸããã', 4656 4676 'Your password has been changed, and the new password has been sent to your email address ([_1]).' => 'ãã¹ã¯ãŒãã倿ŽããŸãããæ°ãããã¹ã¯ãŒãã¯ã¡ãŒã«ã¢ãã¬ã¹([_1])ã«éä¿¡ãããŸãã', 4657 4677 'Recover (s)' => 'åèšå® (s)', 4658 4678 'Recover' => 'åèšå®', 4659 4679 'Go Back (x)' => 'æ»ã (x)', 4680 'Go Back' => 'æ»ã', 4660 4681 4661 4682 ## tmpl/cms/dialog/create_association.tmpl -
trunk/lib/MT/L10N/nl.pm
r2923 r3530 5228 5228 'Upgrade to Feeds.App' => 'Upgraden naar Feeds.App', 5229 5229 'Create a Feed Widget' => 'Feedwidget aanmaken', 5230 5230 'A request has been made to change your password in Movable Type. To complete this process click on the link below to select a new password.' => 'Er is een verzoek ingediend om uw wachtwoord aan te passen in Movable Type. Gelieve dit te bevestigen door op onderstaande link te klikken om een nieuw wachtwoord te kiezen.', # Translate - New 5231 'If you did not request this change, you can safely ignore this email.' => 'Als u deze wijziging niet heeft aangevraagd, kunt u deze e-mail gerust negeren.', # Translate - New 5232 '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New 5233 '[_1] contains an invalid character: [_2]' => '[_1] bevat een ongeldig karakter: [_2]', # Translate - New 5234 'Email address is required.' => 'E-mail adres is vereist', # Translate - New 5235 'User not found' => 'Gebruiker niet gevonden', # Translate - New 5236 'Password reset token not found' => 'Wachtwoord reset token niet gevonden', # Translate - New 5237 'Email address not found' => 'E-mail adres niet gevonden', # Translate - New 5238 'Your request to change your password has expired.' => 'Uw verzoek om uw wachtwoord aan te passen is verlopen', # Translate - New 5239 'Invalid password reset request' => 'Ongeldig verzoek om wachtwoord te veranderen', # Translate - New 5240 'Please confirm your new password' => 'Gelieve uw nieuwe wachtwoord te bevestigen', # Translate - New 5241 'Password do not match' => 'Wachtwoorden komen niet overeen', # Translate - New 5242 'Invalid [_1] parameter.' => 'Ongeldige [_1] parameter', # Translate - New 5243 'Blog, BlogID or Template param must be specified.' => 'Blog, BlogID of Template parameter moet opgegeven zijn.', # Translate - New 5244 'Error saving [_1] record # [_3]: [_2]...' => 'Fout bij opslaan [_1] record # [_3]: [_2]...', # Translate - New 5245 'The email address provided is not unique. Please enter your username.' => 'Een e-mail is niet uniek. Gelieve uw gebruikersnaam op te geven.', # Translate - New 5246 'An email with a link to reset your password has been sent to your email address ([_1]).' => 'Er is een e-mail met een link om uw wachtwoord aan te passen doorgestuurd naar uw e-mail adres ([_1]).', # Translate - New 5247 'Choose New Password' => 'Nieuw wachtwoord kiezen', # Translate - New 5248 'You must set Local Archive Path.' => 'U moet een lokaal archiefpad instellen.', # Translate - New 5249 'You must set a valid Archive URL.' => 'U moet een geldige archief URL instellen.', # Translate - New 5250 'You must set a valid Local Archive Path.' => 'U moet een geldig lokaal archiefpad instellen.', # Translate - New 5251 'Passwords do not match' => 'Wachtwoorden komen niet overeen', # Translate - New 5252 'Password reset for user \'[_1]\' (user #[_2]) was successful. Recovery link sent to the following address: [_3]' => 'Wachtwoord reset voor gebruiker \'[_1]\' (gebruiker #[_2]) geslaagd. Reset link verstuurd naar volgend adres: [_3]', # Translate - New 5253 'Updating password recover email template...' => 'Sjabloon wachtwoordrecuperatie e-mail wordt bijgewerkt...', # Translate - New 5254 'The email address provided is not unique. Please enter your username.' => 'Het opgegeven e-mail adres is niet uniek. Gelieve uw gebruikersnaam op te geven.', # Translate - New 5255 '_WARNING_PASSWORD_RESET_MULTI' => 'U staat op het punt e-mails te versturen waarmee de geselecteerde gebruikers hun wachtwoord kunnen aanpassen. Bent u zeker?', 5256 "A password reset link has been sent to [_3] for user '[_1]' (user #[_2])." => 'Een link om het wachtwoord opnieuw in te stellen is verzonden naar [_3] voor gebruiker \'[_1]\' (gebruiker #[_2]).', 5231 5257 ); 5232 5258 -
trunk/lib/MT/Upgrade/v4.pm
r3106 r3530 463 463 }, 464 464 }, 465 'core_update_password_recover_template' => { 466 version_limit => 4.0068, 467 code => \&core_update_password_recover_template, 468 }, 465 469 }; 466 470 } … … 1217 1221 } 1218 1222 1223 sub core_update_password_recover_template { 1224 my $self = shift; 1225 $self->progress($self->translate_escape("Updating password recover email template...")); 1226 require MT::DefaultTemplates; 1227 my $recover_tmpl = MT::DefaultTemplates->load ({ identifier => 'recover-password' }); 1228 my $recover_text = MT->instance->translate_templatized($recover_tmpl->{text}); 1229 require MT::Template; 1230 my @tmpls = MT::Template->load ({ type => 'email', identifier => 'recover-password' }); 1231 for my $tmpl (@tmpls) { 1232 my $backup = $tmpl->clone; 1233 delete $backup->{column_values} 1234 ->{id}; # make sure we don't overwrite original 1235 delete $backup->{changed_cols}->{id}; 1236 $backup->name( 1237 $backup->name . ' (Backup during upgrade to version 4.24)' ); 1238 $backup->type('backup'); 1239 $backup->identifier(undef); 1240 $backup->save; 1241 1242 $tmpl->text ($recover_text); 1243 $tmpl->save; 1244 } 1245 } 1246 1219 1247 1; -
trunk/tmpl/cms/dialog/recover.tmpl
r1101 r3530 1 1 <mt:setvarblock name="page_title"><__trans phrase="Password Recovery"></mt:setvarblock> 2 2 <mt:setvar name="complete" value="1"> 3 <mt:include name=" include/chromeless_header.tmpl">3 <mt:include name="cms/include/chromeless_header.tmpl"> 4 4 5 <mt:if name="error"> 6 <mtapp:statusmsg 7 id="error" 8 class="error"> 9 <mt:var name="error"> 10 </mtapp:statusmsg> 11 </mt:if> 12 13 <mt:If name="not_unique_email"> 14 <mtapp:statusmsg 15 id="not-unique-email" 16 class="alert"> 17 <__trans phrase="The email address provided is not unique. Please enter your username."> 18 </mtapp:statusmsg> 19 </mt:if> 5 20 6 21 <mt:if name="recovered"> 7 <p><__trans phrase=" Your password has been changed, and the new password has been sent to your email address ([_1])."params="<mt:var name="email" escape="html">"></p>22 <p><__trans phrase="An email with a link to reset your password has been sent to your email address ([_1]).", params="<mt:var name="email" escape="html">"></p> 8 23 9 24 <div class="actions-bar"> 10 25 <div class="actions-bar-inner pkg actions"> 26 <mt:If name="return_to"> 11 27 <a 12 href="<$mt:var name="mt_url"$>" 28 href="<$mt:var name="return_to" escape="html" $>" 29 accesskey="x" 30 title="<__trans phrase="Go Back (x)">" 31 class="primary-button" 32 ><__trans phrase="Go Back"></a> 33 <mt:Else> 34 <a 35 href="<$mt:var name="script_url"$>" 13 36 accesskey="s" 14 37 title="<__trans phrase="Sign in to Movable Type (s)">" 15 38 class="primary-button" 16 39 ><__trans phrase="Sign in to Movable Type"></a> 40 </a> 41 </mt:If> 17 42 </div> 18 43 </div> … … 22 47 <form method="post" action="<mt:var name="script_url">"> 23 48 <input type="hidden" name="__mode" value="recover" /> 49 <input type="hidden" name="return_to" value="<mt:Var name="return_to" escape="html">" /> 24 50 <fieldset> 25 51 52 <mtapp:setting 53 id="email" 54 label="<__trans phrase="Email Address">" 55 label_class="top-label"> 56 <input type="text" name="email" id="email" class="ti" value="<mt:var name="email">" /> 57 </mtapp:setting> 58 59 <mt:If name="not_unique_email"> 26 60 <mtapp:setting 27 61 id="name" 28 62 label="<__trans phrase="Username">" 29 63 label_class="top-label"> 30 <input type="text" name="name" id="name" class="ti" />64 <input type="text" name="name" id="name" class="ti" value="<mt:var name="name">" /> 31 65 </mtapp:setting> 32 33 <mtapp:setting 34 id="hint" 35 label="<__trans phrase="Password recovery word/phrase">" 36 label_class="top-label"> 37 <input type="text" name="hint" id="hint" class="ti" autocomplete="0" /> 38 </mtapp:setting> 66 </mt:If> 39 67 40 68 <div class="actions-bar"> … … 59 87 </mt:if> 60 88 61 62 <mt:include name="include/chromeless_footer.tmpl"> 89 <mt:include name="cms/include/chromeless_footer.tmpl"> -
trunk/tmpl/comment/login.tmpl
r3529 r3530 83 83 </mtapp:setting> 84 84 <mt:if name="can_recover_password"> 85 <div class="right"><a href="<mt:var name=" mt_url">?__mode=start_recover"><__trans phrase="Forgot your password?"></a></div>85 <div class="right"><a href="<mt:var name="script_url">?__mode=start_recover<mt:if name="return_url">&return_to=<mt:var name="return_url" escape="url"></mt:if>"><__trans phrase="Forgot your password?"></a></div> 86 86 </mt:if> 87 87 <p><label><__trans phrase="Remember me?"></label> <input type="checkbox" name="remember" value="1" accesskey="r" class="cb" /></p>
