Skip to content

Instantly share code, notes, and snippets.

@ArsTechnica
Created February 27, 2009 03:10
Show Gist options
  • Save ArsTechnica/71259 to your computer and use it in GitHub Desktop.
Save ArsTechnica/71259 to your computer and use it in GitHub Desktop.
diff --git a/addons/Commercial.pack/templates/professional/recover-password.mtml b/addons/Commercial.pack/templates/professional/recover-password.mtml
index dd6945a..30de96e 100644
--- a/addons/Commercial.pack/templates/professional/recover-password.mtml
+++ b/addons/Commercial.pack/templates/professional/recover-password.mtml
@@ -1,10 +1,7 @@
-<__trans phrase="_USAGE_FORGOT_PASSWORD_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.">
- <$mt:Var name="user_password"$>
+<mt:var name="link_to_login">
-<__trans phrase="_USAGE_FORGOT_PASSWORD_2">
-
- <$mt:Var name="link_to_login"$>
-
-<$mt:Include module="<__trans phrase="Mail Footer">"$>
+<__trans phrase="If you did not request this change, you can safely ignore this email.">
+<mt:include module="<__trans phrase="Mail Footer">">
diff --git a/addons/Community.pack/config.yaml b/addons/Community.pack/config.yaml
index 3271e0d..747ece8 100644
--- a/addons/Community.pack/config.yaml
+++ b/addons/Community.pack/config.yaml
@@ -1,6 +1,6 @@
name: Community Pack
-version: 1.61
-schema_version: 1.6
+version: 1.611
+schema_version: 1.611
l10n_class: MT::Community::L10N
object_types:
@@ -74,14 +74,15 @@ applications:
register: $Community::MT::App::Community::register
do_register: $Community::MT::App::Community::do_register
do_confirm: $Community::MT::App::Community::do_confirm
- start_recover: $Community::MT::App::Community::start_recover
- do_recover: $Community::MT::App::Community::do_recover
resend_auth: $Community::MT::App::Community::resend_auth
loggedin_js: $Community::MT::App::Community::loggedin_js
check_perm_js: $Community::MT::App::Community::check_perm_js
follow: $Community::MT::App::Community::follow
leave: $Community::MT::App::Community::leave
relations_js: $Community::MT::App::Community::relations_js
+ start_recover: $Core::MT::CMS::Tools::start_recover
+ recover: $Core::MT::CMS::Tools::recover_password
+ new_pw: $Core::MT::CMS::Tools::new_password
config_settings:
CommunityScript:
@@ -171,6 +172,10 @@ default_templates:
label: Profile Edit Form
profile_feed:
label: Profile Feed
+ new_password:
+ label: New Password Form
+ new_password_reset_form:
+ label: New Password Reset Form
global:module:
form_field:
label: Form Field
diff --git a/addons/Community.pack/lib/MT/App/Community.pm b/addons/Community.pack/lib/MT/App/Community.pm
index 289fa22..6a153fe 100644
--- a/addons/Community.pack/lib/MT/App/Community.pm
+++ b/addons/Community.pack/lib/MT/App/Community.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: Community.pm 93492 2008-11-14 02:52:26Z fyoshimatsu $
+# $Id: Community.pm 99018 2009-02-25 20:22:22Z bchoate $
package MT::App::Community;
@@ -66,27 +66,6 @@ sub jsonp_error {
return undef;
}
-sub load_global_tmpl {
- my $app = shift;
- my ( $arg, $blog_id ) = @_;
- $blog_id ||= '0';
-
- my $terms = {};
- if ( 'HASH' eq ref($arg) ) {
- $terms = { %$arg, blog_id => $blog_id };
- }
- else {
- $terms = {
- type => $arg,
- blog_id => $blog_id,
- }
- }
- require MT::Template;
- my $tmpl = MT::Template->load( $terms );
- $app->set_default_tmpl_params($tmpl);
- $tmpl;
-}
-
sub _login_user_commenter {
my $app = shift;
@@ -936,16 +915,8 @@ sub _send_registration_notification {
}
sub start_recover {
- my $app = shift;
- my $tmpl = $app->load_global_tmpl('password_reset_form');
- my $return_to = $app->param('return_to');
- if ( $return_to ) {
- $return_to = remove_html($return_to);
- return $app->errtrans('Invalid request.')
- unless is_url( $return_to );
- }
- $tmpl->param( { return_to => $return_to } );
- $tmpl;
+ require MT::App::CMS;
+ MT::App::CMS::start_recover(@_);
}
sub reset_password {
@@ -1692,36 +1663,11 @@ sub edit_profile_method {
my $app = shift;
my %param = $_[0] ? %{ $_[0] } : ();
my $q = $app->param;
- my $id = $q->param('id');
- my $username = $q->param('username');
my $blog_id = $app->param('blog_id') || 0;
my $user = $app->_login_user_commenter();
- unless ($id || $username) {
- if ($user) {
- $id = $user->id;
- $username = $user->name;
- $param{id} = $user->id;
- }
- else {
- return $app->errtrans("Id or Username is required");
- }
- }
-
- unless ($user) {
- if ($id) {
- $user = $app->model('author')->load($id);
- }
- else {
- $user = $app->model('author')->load( { name => $username } );
- }
- }
return $app->errtrans("Unknown user") if ( !$user );
- my $this_user = $app->user;
- return $app->errtrans("Cannot edit profile.")
- if ( !$this_user or $user->id != $this_user->id );
-
my $tmpl = $app->load_global_tmpl('profile_edit_form')
or return $app->error("No profile edit template defined");
@@ -1732,17 +1678,17 @@ sub edit_profile_method {
unless is_url( $return_to );
}
- my $return_args = $app->uri_params( mode => 'edit', args => { id => $id } );
+ my $return_args = $app->uri_params( mode => 'edit', args => { id => $user->id } );
$return_args =~ s!^\?!!;
my $cfg = $app->config;
- $param{'auth_mode_' . $cfg->AuthenticationModule} = 1;
# FIXME: necessary?
for my $p ( $q->param ) {
$param{$p} = $q->param($p);
}
+ $param{'auth_mode_' . $cfg->AuthenticationModule} = 1;
$param{blog_id} = $blog_id;
$param{name} = $user->name;
$param{nickname} = $user->nickname;
@@ -1757,7 +1703,7 @@ sub edit_profile_method {
}
$param{return_args} = $return_args;
$param{field_loop} =
- field_loop( object_type => 'author', object_id => $id, simple => 1 );
+ field_loop( object_type => 'author', object_id => $user->id, simple => 1 );
$tmpl->param( \%param );
$tmpl;
@@ -1770,18 +1716,13 @@ sub save_profile_method {
if $app->request_method() ne 'POST';
my $q = $app->param;
- my $id = $q->param('id');
my %param = ();
my $author = $app->_login_user_commenter();
- die "Invalid request" unless $author;
+ return $app->error( $app->translate("Invalid request") )
+ unless $author;
$app->validate_magic() or return;
- if ( $id != $author->id ) {
- $param{error} = $app->translate('Cannot edit profile.');
- return $app->edit_profile_method( \%param );
- }
-
unless ( $param{external_auth} ) {
my $nickname = $q->param('nickname');
unless ( $nickname && $q->param('email') ) {
diff --git a/addons/Community.pack/lib/MT/Community/L10N/ja.pm b/addons/Community.pack/lib/MT/Community/L10N/ja.pm
index aebe935..4eb4946 100644
--- a/addons/Community.pack/lib/MT/Community/L10N/ja.pm
+++ b/addons/Community.pack/lib/MT/Community/L10N/ja.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: ja.pm 84995 2008-07-14 02:37:00Z fyoshimatsu $
+# $Id: ja.pm 98821 2009-02-24 04:30:50Z fyoshimatsu $
package MT::Community::L10N::ja;
@@ -356,12 +356,14 @@ use vars qw( %Lexicon );
'Following Users' => '注目しているユーザー',
'Being Followed' => '注目されているユーザー',
'Login Form' => 'ログインフォーム',
+ 'New Password Reset Form' => '新しいパスワード再設定フォーム',
'Password Reset Form' => 'パスワード再設定フォーム',
'Registration Form' => '登録フォーム',
'Registration Confirmation' => '登録の確認',
'Profile View' => 'プロフィール',
'Profile Edit Form' => 'プロフィールの編集フォーム',
'Profile Feed' => 'プロフィールフィード',
+ 'New Password Form' => '新しいパスワードの設定フォーム',
'Email verification' => 'メールアドレスの確認',
'Registration notification' => '登録通知',
'New entry notification' => 'ブログ記事の投稿通知',
diff --git a/default_templates/recover-password.mtml b/default_templates/recover-password.mtml
index dd6945a..30de96e 100644
--- a/default_templates/recover-password.mtml
+++ b/default_templates/recover-password.mtml
@@ -1,10 +1,7 @@
-<__trans phrase="_USAGE_FORGOT_PASSWORD_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.">
- <$mt:Var name="user_password"$>
+<mt:var name="link_to_login">
-<__trans phrase="_USAGE_FORGOT_PASSWORD_2">
-
- <$mt:Var name="link_to_login"$>
-
-<$mt:Include module="<__trans phrase="Mail Footer">"$>
+<__trans phrase="If you did not request this change, you can safely ignore this email.">
+<mt:include module="<__trans phrase="Mail Footer">">
diff --git a/lib/MT.pm b/lib/MT.pm
index a6edb63..d239500 100644
--- a/lib/MT.pm
+++ b/lib/MT.pm
@@ -29,10 +29,10 @@ our $plugins_installed;
BEGIN {
$plugins_installed = 0;
- ( $VERSION, $SCHEMA_VERSION ) = ( '4.23', '4.0067' );
+ ( $VERSION, $SCHEMA_VERSION ) = ( '4.24', '4.0068' );
( $PRODUCT_NAME, $PRODUCT_CODE, $PRODUCT_VERSION, $VERSION_ID ) = (
'Movable Type Pro', 'MT',
- '4.23', '4.23-en'
+ '4.24', '4.24-en'
);
$DebugMode = 0;
@@ -1989,6 +1989,27 @@ sub find_file {
undef;
}
+sub load_global_tmpl {
+ my $app = shift;
+ my ( $arg, $blog_id ) = @_;
+ $blog_id ||= '0';
+
+ my $terms = {};
+ if ( 'HASH' eq ref($arg) ) {
+ $terms = { %$arg, blog_id => $blog_id };
+ }
+ else {
+ $terms = {
+ type => $arg,
+ blog_id => $blog_id,
+ }
+ }
+ require MT::Template;
+ my $tmpl = MT::Template->load( $terms );
+ $app->set_default_tmpl_params($tmpl) if $tmpl;
+ $tmpl;
+}
+
sub load_tmpl {
my $mt = shift;
if ( exists($mt->{component}) && ( $mt->{component} ne 'Core' ) ) {
diff --git a/lib/MT/App.pm b/lib/MT/App.pm
index 469e612..e81aa1a 100644
--- a/lib/MT/App.pm
+++ b/lib/MT/App.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: App.pm 3179 2008-11-11 04:18:13Z fumiakiy $
+# $Id: App.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::App;
diff --git a/lib/MT/App/ActivityFeeds.pm b/lib/MT/App/ActivityFeeds.pm
index 28172fd..9e84859 100644
--- a/lib/MT/App/ActivityFeeds.pm
+++ b/lib/MT/App/ActivityFeeds.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: ActivityFeeds.pm 2877 2008-08-01 01:43:09Z bchoate $
+# $Id: ActivityFeeds.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::App::ActivityFeeds;
diff --git a/lib/MT/App/CMS.pm b/lib/MT/App/CMS.pm
index 37b4ee9..cca9dce 100644
--- a/lib/MT/App/CMS.pm
+++ b/lib/MT/App/CMS.pm
@@ -142,6 +142,10 @@ sub core_methods {
code => "${pkg}Tools::recover_password",
requires_login => 0,
},
+ 'new_pw' => {
+ code => "${pkg}Tools::new_password",
+ requires_login => 0,
+ },
'view_log' => "${pkg}Log::view",
'list_log' => "${pkg}Log::view",
diff --git a/lib/MT/App/Comments.pm b/lib/MT/App/Comments.pm
index 39e2650..8d1a629 100644
--- a/lib/MT/App/Comments.pm
+++ b/lib/MT/App/Comments.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: Comments.pm 3091 2008-10-08 01:11:11Z auno $
+# $Id: Comments.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::App::Comments;
use strict;
@@ -40,6 +40,10 @@ sub init {
red => \&do_red,
generate_captcha => \&generate_captcha,
+ start_recover => \&start_recover,
+ recover => \&recover,
+ new_pw => \&new_pw,
+
# deprecated
cmtr_name_js => \&commenter_name_js,
cmtr_status_js => \&commenter_status_js,
@@ -1886,6 +1890,21 @@ sub blog {
return $app->{_blog};
}
+sub start_recover {
+ require MT::CMS::Tools;
+ MT::CMS::Tools::start_recover(@_);
+}
+
+sub recover {
+ require MT::CMS::Tools;
+ MT::CMS::Tools::recover_password(@_);
+}
+
+sub new_pw {
+ require MT::CMS::Tools;
+ MT::CMS::Tools::new_password(@_);
+}
+
1;
__END__
diff --git a/lib/MT/Asset/Image.pm b/lib/MT/Asset/Image.pm
index 26dbc07..51a6bf2 100644
--- a/lib/MT/Asset/Image.pm
+++ b/lib/MT/Asset/Image.pm
@@ -122,14 +122,9 @@ sub thumbnail_file {
$param{Height} = $i_h;
}
- if( !exists $param{force}){
- $param{force} = 0;
- }
# find the longest dimension of the image:
- my $force = $param{force};
- my @sz = ($param{Height}, $param{Width});
- @sz = _get_dimension( $i_h, $i_w, $param{Height}, $param{Width} ) unless $force;
- my ( $n_h, $n_w ) = @sz;
+ my ( $n_h, $n_w ) =
+ _get_dimension( $i_h, $i_w, $param{Height}, $param{Width} );
my $file = $asset->thumbnail_filename(%param) or return;
my $thumbnail = File::Spec->catfile( $asset_cache_path, $file );
@@ -235,10 +230,9 @@ sub thumbnail_filename {
my $file = $asset->file_name or return;
require MT::Util;
- my $format = $param{Format} || MT->translate('%f-thumb-%wx%h-%i%p%x');
+ my $format = $param{Format} || MT->translate('%f-thumb-%wx%h-%i%x');
my $width = $param{Width} || 'auto';
my $height = $param{Height} || 'auto';
- my $force = $param{force} ? '-f' : '';
$file =~ s/\.\w+$//;
my $base = File::Basename::basename($file);
my $id = $asset->id;
@@ -249,7 +243,6 @@ sub thumbnail_filename {
$format =~ s/%f/$base/g;
$format =~ s/%i/$id/g;
$format =~ s/%x/$ext/g;
- $format =~ s/%p/$force/g;
return $format;
}
@@ -699,4 +692,4 @@ Return the HTML I<IMG> element with the image asset attributes.
Please see the L<MT/"AUTHOR & COPYRIGHT"> for author, copyright, and
license information.
-=cut
\ No newline at end of file
+=cut
diff --git a/lib/MT/Author.pm b/lib/MT/Author.pm
index 8d924a7..711409d 100644
--- a/lib/MT/Author.pm
+++ b/lib/MT/Author.pm
@@ -41,6 +41,9 @@ __PACKAGE__->install_properties({
# meta properties
'widgets' => 'hash meta',
'favorite_blogs' => 'array meta',
+ 'password_reset' => 'string meta',
+ 'password_reset_expires' => 'string meta',
+ 'password_reset_return_to' => 'string meta',
},
defaults => {
type => 1,
@@ -232,10 +235,8 @@ sub save {
}
}
# Generate basename
- unless ($auth->basename()) {
- my $basename = MT::Util::make_unique_author_basename($auth);
- $auth->basename($basename);
- }
+ my $basename = MT::Util::make_unique_author_basename($auth);
+ $auth->basename($basename);
}
my $privs;
diff --git a/lib/MT/CMS/Entry.pm b/lib/MT/CMS/Entry.pm
index b4511e4..a8c7183 100644
--- a/lib/MT/CMS/Entry.pm
+++ b/lib/MT/CMS/Entry.pm
@@ -893,7 +893,7 @@ sub preview {
if ($app->config('LocalPreviews')) {
$old_url = $blog->site_url;
$old_url =~ s!^(https?://[^/]+?/)(.*)?!$1!;
- $new_url = $app->base . '/published/';
+ $new_url = $app->base . '/';
$html =~ s!\Q$old_url\E!$new_url!g;
}
diff --git a/lib/MT/CMS/Tools.pm b/lib/MT/CMS/Tools.pm
index 4ffe3f8..17c3349 100644
--- a/lib/MT/CMS/Tools.pm
+++ b/lib/MT/CMS/Tools.pm
@@ -106,39 +106,199 @@ sub get_syscheck_content {
sub start_recover {
my $app = shift;
+ my ($param) = @_;
+ $param ||= {};
+ $param->{'email'} = $app->param('email');
+ $param->{'return_to'} = $app->param('return_to');
$app->add_breadcrumb( $app->translate('Password Recovery') );
- $app->load_tmpl('dialog/recover.tmpl');
+
+ my $blog_id = $app->param('blog_id');
+ my $tmpl = $app->load_global_tmpl( { identifier => 'new_password_reset_form',
+ $blog_id ? ( blog_id => $app->param('blog_id') ) : () } );
+ if (!$tmpl) {
+ $tmpl = $app->load_tmpl( 'cms/dialog/recover.tmpl' );
+ }
+ $tmpl->param($param);
+ return $tmpl;
}
sub recover_password {
- my $app = shift;
- my $q = $app->param;
- my $name = $q->param('name');
- my $class = ref $app eq 'MT::App::Upgrader' ? 'MT::BasicAuthor' : $app->model('author');
+ my $app = shift;
+ my $email = $app->param('email');
+ my $username = $app->param('name');
+
+ if ( !$email ) {
+ return $app->start_recover(
+ { error => $app->translate('Email Address is required for password recovery.'), } );
+ }
+
+ # Searching user by email (and username)
+ my $class
+ = ref $app eq 'MT::App::Upgrader'
+ ? 'MT::BasicAuthor'
+ : $app->model('author');
eval "use $class;";
- my @author = $class->load( { name => $name } );
- my $author;
- foreach (@author) {
+
+ my @all_authors = $class->load(
+ { email => $email, ( $username ? ( name => $username ) : () ) } );
+ my @authors;
+ my $user;
+ foreach (@all_authors) {
next unless $_->password && ( $_->password ne '(none)' );
- $author = $_;
+ push( @authors, $_ );
+ }
+ if ( !@authors ) {
+ return $app->start_recover(
+ { error => $app->translate('User not found'),
+ ( $username ? ( not_unique_email => 1 ) : () ),
+ }
+ );
}
+ elsif ( @authors > 1 ) {
+ return $app->start_recover( { not_unique_email => 1, } );
+ }
+ $user = pop @authors;
- my ( $rc, $res ) =
- reset_password( $app, $author, $q->param('hint'), $name );
+ # Generate Token
+ require MT::Util::Captcha;
+ my $salt = MT::Util::Captcha->_generate_code(8);
+ my $expires = time + ( 60 * 60 );
+ my $token = MT::Util::perl_sha1_digest_hex(
+ $salt . $expires . $app->config->SecretToken );
- if ($rc) {
- $app->add_breadcrumb( $app->translate('Password Recovery') );
- $app->load_tmpl(
- 'dialog/recover.tmpl',
- {
- recovered => 1,
- email => $author->email
- }
+ $user->password_reset($salt);
+ $user->password_reset_expires($expires);
+ $user->password_reset_return_to($app->param('return_to'))
+ if $app->param('return_to');
+ $user->save;
+
+ # Send mail to user
+ my %head = (
+ id => 'recover_password',
+ To => $email,
+ From => $app->config('EmailAddressMain') || $email,
+ Subject => $app->translate("Password Recovery")
+ );
+ my $charset = $app->charset;
+ my $mail_enc = uc( $app->config('MailEncoding') || $charset );
+ $head{'Content-Type'} = qq(text/plain; charset="$mail_enc");
+
+ my $body = $app->build_email(
+ 'recover-password',
+ { link_to_login => $app->base
+ . $app->uri
+ . "?__mode=new_pw&token=$token&email="
+ . encode_url($email),
+ }
+ );
+
+ require MT::Mail;
+ MT::Mail->send( \%head, $body )
+ or return $app->error(
+ $app->translate(
+ "Error sending mail ([_1]); please fix the problem, then "
+ . "try again to recover your password.",
+ MT::Mail->errstr
+ )
);
+
+ return $app->start_recover( { recovered => 1, } );
+}
+
+sub new_password {
+ my $app = shift;
+ my ($param) = @_;
+ $param ||= {};
+
+ my $token = $app->param('token');
+ if ( !$token ) {
+ return $app->start_recover(
+ { error => $app->translate('Password reset token not found'), } );
+ }
+
+ my $email = $app->param('email');
+ if ( !$token ) {
+ return $app->start_recover(
+ { error => $app->translate('Email address not found'), } );
+ }
+
+ my $class = $app->model('author');
+ my @users = $class->load( { email => $email } );
+ if ( !@users ) {
+ return $app->start_recover(
+ { error => $app->translate('User not found'), } );
+ }
+
+ # comparing token
+ require MT::Util::Captcha;
+ my $user;
+ for my $u (@users) {
+ my $salt = $u->password_reset;
+ my $expires = $u->password_reset_expires;
+ my $compare = MT::Util::perl_sha1_digest_hex(
+ $salt . $expires . $app->config->SecretToken );
+ if ( $compare eq $token ) {
+ if ( time > $u->password_reset_expires ) {
+ return $app->start_recover(
+ { error => $app->translate(
+ 'Your request to change your password has expired.'
+ ),
+ }
+ );
+ }
+ $user = $u;
+ last;
+ }
}
- else {
- $app->error($res);
+
+ if ( !$user ) {
+ return $app->start_recover(
+ { error => $app->translate('Invalid password reset request'), } );
+ }
+
+ # Password reset
+ my $new_password = $app->param('password');
+ if ($new_password) {
+ my $again = $app->param('password_again');
+ if ( !$again ) {
+ $param->{'error'}
+ = $app->translate('Please confirm your new password');
+ }
+ elsif ( $new_password ne $again ) {
+ $param->{'error'} = $app->translate('Passwords do not match');
+ }
+ else {
+ my $redirect = $user->password_reset_return_to || '';
+ $user->set_password($new_password);
+ $user->password_reset(undef);
+ $user->password_reset_expires(undef);
+ $user->password_reset_return_to(undef);
+ $user->save;
+ $app->param( 'username', $user->name )
+ if $user->type == MT::Author::AUTHOR();
+ $app->login;
+ if ($redirect) {
+ return $app->redirect($redirect);
+ } else{
+ return $app->return_to_dashboard( redirect => 1 );
+ }
+ }
+ }
+
+ $param->{'email'} = $email;
+ $param->{'token'} = $token;
+ $param->{'password'} = $app->param('password');
+ $param->{'password_again'} = $app->param('password_again');
+ $app->add_breadcrumb( $app->translate('Password Recovery') );
+
+ my $blog_id = $app->param('blog_id');
+ my $tmpl = $app->load_global_tmpl( { identifier => 'new_password',
+ $blog_id ? ( blog_id => $app->param('blog_id') ) : () } );
+ if (!$tmpl) {
+ $tmpl = $app->load_tmpl( 'cms/dialog/new_password.tmpl' );
}
+ $tmpl->param($param);
+ return $tmpl;
}
sub do_list_action {
@@ -1530,14 +1690,21 @@ sub reset_password {
return ( 0, $app->translate("User does not have email address") )
unless $author->email;
- my @pool = ( 'a' .. 'z', 0 .. 9 );
- my $pass = '';
- for ( 1 .. 8 ) { $pass .= $pool[ rand @pool ] }
- $author->set_password($pass);
+ # Generate Token
+ require MT::Util::Captcha;
+ my $salt = MT::Util::Captcha->_generate_code(8);
+ my $expires = time + ( 60 * 60 );
+ my $token = MT::Util::perl_sha1_digest_hex(
+ $salt . $expires . $app->config->SecretToken );
+
+ $author->password_reset($salt);
+ $author->password_reset_expires($expires);
+ $author->password_reset_return_to(undef);
$author->save;
+
my $message =
$app->translate(
-"Password was reset for user '[_1]' (user #[_2]). Password was sent to the following address: [_3]",
+"A password reset link has been sent to [_3] for user '[_1]' (user #[_2]).",
$author->name, $author->id, $author->email );
$app->log(
{
@@ -1548,34 +1715,37 @@ sub reset_password {
}
);
- my $address =
- defined $author->nickname
- ? $author->nickname . ' <' . $author->email . '>'
- : $author->email;
+ # Send mail to user
+ my $email = $author->email;
my %head = (
id => 'recover_password',
- To => $address,
- From => $app->config('EmailAddressMain') || $address,
+ To => $email,
+ From => $app->config('EmailAddressMain') || $email,
Subject => $app->translate("Password Recovery")
);
my $charset = $app->charset;
my $mail_enc = uc( $app->config('MailEncoding') || $charset );
$head{'Content-Type'} = qq(text/plain; charset="$mail_enc");
- my $body = $app->build_email( 'recover-password.tmpl',
- { user_password => $pass, link_to_login => $app->base . $app->mt_uri }
+ my $body = $app->build_email(
+ 'recover-password',
+ { link_to_login => $app->base
+ . $app->uri
+ . "?__mode=new_pw&token=$token&email="
+ . encode_url($email),
+ }
);
- $body = wrap_text( $body, 72 );
+
require MT::Mail;
MT::Mail->send( \%head, $body )
- or return (
- 0,
+ or return $app->error(
$app->translate(
"Error sending mail ([_1]); please fix the problem, then "
- . "try again to recover your password.",
+ . "try again to recover your password.",
MT::Mail->errstr
)
- );
+ );
+
( 1, $message );
}
diff --git a/lib/MT/ImportExport.pm b/lib/MT/ImportExport.pm
index 035207f..e8f2a5c 100644
--- a/lib/MT/ImportExport.pm
+++ b/lib/MT/ImportExport.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: ImportExport.pm 1174 2008-01-08 21:02:50Z bchoate $
+# $Id: ImportExport.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::ImportExport;
use strict;
diff --git a/lib/MT/L10N/de-iso-8859-1.pm b/lib/MT/L10N/de-iso-8859-1.pm
index df7b428..f73f513 100644
--- a/lib/MT/L10N/de-iso-8859-1.pm
+++ b/lib/MT/L10N/de-iso-8859-1.pm
@@ -5229,7 +5229,34 @@ Suchbasis: [_2]",
'Feeds.App Lite helps you republish feeds on your blogs. Want to do more with feeds in Movable Type?' => 'Mit Feeds.App Lite können Sie Feedinhalte in Ihre Blogs integrieren. Noch mehr Möglichkeiten erhalten Sie durch ein',
'Upgrade to Feeds.App' => 'Upgrade auf Feeds.App',
'Create a Feed Widget' => 'Feed-Widget anlegen',
-
+
+ '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] beinhaltet ein ungültiges Schriftzeichen: [_2]', # Translate - New
+ 'Email address is required.' => 'Bitte geben Sie Ihre E-Mail-Adresse ein.', # Translate - New
+ 'User not found' => 'Dieser Benutzer wurde nicht gefunden', # Translate - New
+ 'Password reset token not found' => 'Der Passwort Reset Token wurde nicht gefunden', # Translate - New
+ 'Email address not found' => 'Diese E-Mail-Adresse wurde nicht gefunden', # Translate - New
+ 'Your request to change your password has expired.' => 'Ihre Anfrage auf Änderung Ihres Passwortes ist ausgelaufen.', # Translate - New
+ 'Invalid password reset request' => 'Ungültige Passwort Reset Anfrage', # Translate - New
+ 'Please confirm your new password' => 'Bitte bestätigen Sie Ihr neues Passwort', # Translate - New
+ 'Password do not match' => 'Die Passwörter stimmen nicht überein', # Translate - New
+ 'Invalid [_1] parameter.' => 'Ungültiger [_1] Parameter.', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Blog, BlogID oder Template Parameter müssen spezifiziert werden.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Error saving [_1] record # [_3]: [_2]...', # Translate - New
+ '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
+ '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
+ 'Choose New Password' => 'Wählen Sie Ihr neues Passwort', # Translate - New
+ 'You must set Local Archive Path.' => 'Bitte definieren Sie Ihren Local Archive Path.', # Translate - New
+ 'You must set a valid Archive URL.' => 'Bitte definieren Sie eine gültige Archive URL.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'Bitte definieren Sie einen gültigen Local Archive Path.', # Translate - New
+ '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.',
+ '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.',
+ 'Passwords do not match' => 'Passwörter stimmen nicht überein.',
+ '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',
+ 'Updating password recover email template...' => 'Aktualisierung des Passwort-Wiederherstellungs-Templates...',
+ '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.',
+ '_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?',
+ "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])'
);
## New words: 361
diff --git a/lib/MT/L10N/de.pm b/lib/MT/L10N/de.pm
index e5c1fe7..95a548d 100644
--- a/lib/MT/L10N/de.pm
+++ b/lib/MT/L10N/de.pm
@@ -5229,7 +5229,34 @@ Suchbasis: [_2]",
'Feeds.App Lite helps you republish feeds on your blogs. Want to do more with feeds in Movable Type?' => 'Mit Feeds.App Lite können Sie Feedinhalte in Ihre Blogs integrieren. Noch mehr Möglichkeiten erhalten Sie durch ein',
'Upgrade to Feeds.App' => 'Upgrade auf Feeds.App',
'Create a Feed Widget' => 'Feed-Widget anlegen',
-
+
+ '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] beinhaltet ein ungültiges Schriftzeichen: [_2]', # Translate - New
+ 'Email address is required.' => 'Bitte geben Sie Ihre E-Mail-Adresse ein.', # Translate - New
+ 'User not found' => 'Dieser Benutzer wurde nicht gefunden', # Translate - New
+ 'Password reset token not found' => 'Der Passwort Reset Token wurde nicht gefunden', # Translate - New
+ 'Email address not found' => 'Diese E-Mail-Adresse wurde nicht gefunden', # Translate - New
+ 'Your request to change your password has expired.' => 'Ihre Anfrage auf Änderung Ihres Passwortes ist ausgelaufen.', # Translate - New
+ 'Invalid password reset request' => 'Ungültige Passwort Reset Anfrage', # Translate - New
+ 'Please confirm your new password' => 'Bitte bestätigen Sie Ihr neues Passwort', # Translate - New
+ 'Password do not match' => 'Die Passwörter stimmen nicht überein', # Translate - New
+ 'Invalid [_1] parameter.' => 'Ungültiger [_1] Parameter.', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Blog, BlogID oder Template Parameter müssen spezifiziert werden.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Error saving [_1] record # [_3]: [_2]...', # Translate - New
+ '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
+ '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
+ 'Choose New Password' => 'Wählen Sie Ihr neues Passwort', # Translate - New
+ 'You must set Local Archive Path.' => 'Bitte definieren Sie Ihren Local Archive Path.', # Translate - New
+ 'You must set a valid Archive URL.' => 'Bitte definieren Sie eine gültige Archive URL.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'Bitte definieren Sie einen gültigen Local Archive Path.', # Translate - New
+ '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.',
+ '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.',
+ 'Passwords do not match' => 'Passwörter stimmen nicht überein.',
+ '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',
+ 'Updating password recover email template...' => 'Aktualisierung des Passwort-Wiederherstellungs-Templates...',
+ '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.',
+ '_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?',
+ "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])'
);
## New words: 361
diff --git a/lib/MT/L10N/en_us.pm b/lib/MT/L10N/en_us.pm
index c59419f..eb4ff9e 100644
--- a/lib/MT/L10N/en_us.pm
+++ b/lib/MT/L10N/en_us.pm
@@ -58,7 +58,7 @@ sub ascii_only { ((ref $_[0]) || $_[0]) eq __PACKAGE__ }
'_USAGE_GROUP_PROFILE' => 'This screen allows you to edit the group\'s profile.',
'_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.',
'_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?',
- '_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?',
+ '_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?',
'_USAGE_NEW_AUTHOR' => 'From this screen you can create a new user in the system.',
'_USAGE_NEW_GROUP' => 'From this screen you can create a new group in the system.',
'_USAGE_ROLES' => 'From this screen you can view the roles you have for your weblogs, and create roles. You can see the details for the different roles by clicking on their names.',
diff --git a/lib/MT/L10N/es-iso-8859-1.pm b/lib/MT/L10N/es-iso-8859-1.pm
index 9821fe0..2525a9a 100644
--- a/lib/MT/L10N/es-iso-8859-1.pm
+++ b/lib/MT/L10N/es-iso-8859-1.pm
@@ -5228,6 +5228,28 @@ B
'Upgrade to Feeds.App' => 'Actualícese a Feeds.App',
'Create a Feed Widget' => 'Crear un widget de fuente',
+ '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
+ 'If you did not request this change, you can safely ignore this email.' => 'Si no solicitó este cambio, ignore este mensaje.', # Translate - New
+ '%f-thumb-%wx%h-%i%x' => '%f-miniatura-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] contiene un caracter no válido: [_2]', # Translate - New
+ 'Email address is required.' => 'El correo electrónico es obligatorio.', # Translate - New
+ 'User not found' => 'Usuario no encontrado', # Translate - New
+ 'Password reset token not found' => 'Token para el reinicio de la contraseña no encontrado', # Translate - New
+ 'Email address not found' => 'Dirección de correo no encontrada', # Translate - New
+ 'Your request to change your password has expired.' => 'Expiró su solicitud de cambio de contraseña.', # Translate - New
+ 'Invalid password reset request' => 'Solicitud de reinicio de contraseña no válida', # Translate - New
+ 'Please confirm your new password' => 'Por favor, confirme su nueva contraseña', # Translate - New
+ 'Password do not match' => 'La contraseña no coincide', # Translate - New
+ 'Invalid [_1] parameter.' => 'Parámetro [_1] no válido', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Debe especificarse el parámetro Blog, BlogID o Template.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Error guardando registro [_1] # [_3]: [_2]...', # Translate - New
+ 'The email address provided is not unique. Please enter your username.' => 'El correo no es único. Por favor, introduzca el usuario.', # Translate - New
+ '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
+ 'Choose New Password' => 'Seleccione la nueva contraseña', # Translate - New
+ 'You must set Local Archive Path.' => 'Debe indicar la ruta local de archivos.', # Translate - New
+ 'You must set a valid Archive URL.' => 'Debe indicar una URL de archivos válida.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'Debe indicar una ruta local de archivos válida.', # Translate - New
+
);
## New words: 190
diff --git a/lib/MT/L10N/es.pm b/lib/MT/L10N/es.pm
index 8a8f1df..48d9f1b 100644
--- a/lib/MT/L10N/es.pm
+++ b/lib/MT/L10N/es.pm
@@ -5228,6 +5228,28 @@ Búsqueda base: [_2]",
'Upgrade to Feeds.App' => 'Actualícese a Feeds.App',
'Create a Feed Widget' => 'Crear un widget de fuente',
+ '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
+ 'If you did not request this change, you can safely ignore this email.' => 'Si no solicitó este cambio, ignore este mensaje.', # Translate - New
+ '%f-thumb-%wx%h-%i%x' => '%f-miniatura-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] contiene un caracter no válido: [_2]', # Translate - New
+ 'Email address is required.' => 'El correo electrónico es obligatorio.', # Translate - New
+ 'User not found' => 'Usuario no encontrado', # Translate - New
+ 'Password reset token not found' => 'Token para el reinicio de la contraseña no encontrado', # Translate - New
+ 'Email address not found' => 'Dirección de correo no encontrada', # Translate - New
+ 'Your request to change your password has expired.' => 'Expiró su solicitud de cambio de contraseña.', # Translate - New
+ 'Invalid password reset request' => 'Solicitud de reinicio de contraseña no válida', # Translate - New
+ 'Please confirm your new password' => 'Por favor, confirme su nueva contraseña', # Translate - New
+ 'Password do not match' => 'La contraseña no coincide', # Translate - New
+ 'Invalid [_1] parameter.' => 'Parámetro [_1] no válido', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Debe especificarse el parámetro Blog, BlogID o Template.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Error guardando registro [_1] # [_3]: [_2]...', # Translate - New
+ 'The email address provided is not unique. Please enter your username.' => 'El correo no es único. Por favor, introduzca el usuario.', # Translate - New
+ '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
+ 'Choose New Password' => 'Seleccione la nueva contraseña', # Translate - New
+ 'You must set Local Archive Path.' => 'Debe indicar la ruta local de archivos.', # Translate - New
+ 'You must set a valid Archive URL.' => 'Debe indicar una URL de archivos válida.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'Debe indicar una ruta local de archivos válida.', # Translate - New
+
);
## New words: 190
diff --git a/lib/MT/L10N/fr-iso-8859-1.pm b/lib/MT/L10N/fr-iso-8859-1.pm
index 2b0c055..a6e0a3f 100644
--- a/lib/MT/L10N/fr-iso-8859-1.pm
+++ b/lib/MT/L10N/fr-iso-8859-1.pm
@@ -5229,6 +5229,33 @@ Base de recherche : [_2]",
'Upgrade to Feeds.App' => 'Mise à jour Feeds.App',
'Create a Feed Widget' => 'Créer un widget à partir d\'un flux',
+ '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
+ '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
+ '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] contient un caractère invalide : [_2]', # Translate - New
+ 'Email address is required.' => 'Adresse email obligatoire', # Translate - New
+ 'User not found' => 'Utilisateur introuvable', # Translate - New
+ 'Password reset token not found' => 'Token de remise à zéro du mot de passe introuvable', # Translate - New
+ 'Email address not found' => 'Adresse email introuvable', # Translate - New
+ 'Your request to change your password has expired.' => 'Votre demande de modification de mot de passe a expirée.', # Translate - New
+ 'Invalid password reset request' => 'Requête de modification de mot de passe invalide', # Translate - New
+ 'Please confirm your new password' => 'Merci de confirmer votre nouveau mot de passe', # Translate - New
+ 'Password do not match' => 'Le mot de passe ne correspond pas', # Translate - New
+ 'Invalid [_1] parameter.' => 'Paramètre [_1] invalide', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Les paramètres Blog, BlogID ou Template doivent être spécifiés.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Erreur en enregistrant l\'enregistrement [_1] # [_3]: [_2]...', # Translate - New
+ '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
+ '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
+ 'Choose New Password' => 'Choisissez un nouveau mot de passe', # Translate - New
+ 'You must set Local Archive Path.' => 'Vous devez renseigner Local Archive Path.', # Translate - New
+ 'You must set a valid Archive URL.' => 'Vous devez renseigner une Archive URL valide.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'Vous devez renseigner un Local Archive Path valide.', # Translate - New
+ 'Passwords do not match' => 'Les mots de passe ne correspondent pas', # Translate - New
+ '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
+ 'Updating password recover email template...' => 'Template de réinitialisation du mot de passe en cours de mise à jour...', # Translate - New
+ '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
+ '_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 ?',
+ "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]).',
);
## New words: 190
diff --git a/lib/MT/L10N/fr.pm b/lib/MT/L10N/fr.pm
index e8c9b4f..520015f 100644
--- a/lib/MT/L10N/fr.pm
+++ b/lib/MT/L10N/fr.pm
@@ -5229,6 +5229,33 @@ Base de recherche : [_2]",
'Upgrade to Feeds.App' => 'Mise à jour Feeds.App',
'Create a Feed Widget' => 'Créer un widget à partir d\'un flux',
+ '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
+ '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
+ '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] contient un caractère invalide : [_2]', # Translate - New
+ 'Email address is required.' => 'Adresse email obligatoire', # Translate - New
+ 'User not found' => 'Utilisateur introuvable', # Translate - New
+ 'Password reset token not found' => 'Token de remise à zéro du mot de passe introuvable', # Translate - New
+ 'Email address not found' => 'Adresse email introuvable', # Translate - New
+ 'Your request to change your password has expired.' => 'Votre demande de modification de mot de passe a expirée.', # Translate - New
+ 'Invalid password reset request' => 'Requête de modification de mot de passe invalide', # Translate - New
+ 'Please confirm your new password' => 'Merci de confirmer votre nouveau mot de passe', # Translate - New
+ 'Password do not match' => 'Le mot de passe ne correspond pas', # Translate - New
+ 'Invalid [_1] parameter.' => 'Paramètre [_1] invalide', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Les paramètres Blog, BlogID ou Template doivent être spécifiés.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Erreur en enregistrant l\'enregistrement [_1] # [_3]: [_2]...', # Translate - New
+ '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
+ '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
+ 'Choose New Password' => 'Choisissez un nouveau mot de passe', # Translate - New
+ 'You must set Local Archive Path.' => 'Vous devez renseigner Local Archive Path.', # Translate - New
+ 'You must set a valid Archive URL.' => 'Vous devez renseigner une Archive URL valide.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'Vous devez renseigner un Local Archive Path valide.', # Translate - New
+ 'Passwords do not match' => 'Les mots de passe ne correspondent pas', # Translate - New
+ '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
+ 'Updating password recover email template...' => 'Template de réinitialisation du mot de passe en cours de mise à jour...', # Translate - New
+ '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
+ '_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 ?',
+ "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]).',
);
## New words: 190
diff --git a/lib/MT/L10N/ja.pm b/lib/MT/L10N/ja.pm
index 66c1f99..2985ee3 100644
--- a/lib/MT/L10N/ja.pm
+++ b/lib/MT/L10N/ja.pm
@@ -3,7 +3,7 @@
# For more information, consult your Movable Type license.
#
#
-# $Id: ja.pm 3076 2008-09-30 02:49:19Z fumiakiy $
+# $Id: ja.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::L10N::ja;
use strict;
@@ -323,6 +323,8 @@ use vars qw( @ISA %Lexicon );
'_USAGE_FORGOT_PASSWORD_1' => 'パスワードを再設定しました。新しいパスワードを通知します。',
'_USAGE_FORGOT_PASSWORD_2' => '以下のURLから、新しいパスワードを使ってMovable Typeにログインし、すぐにパスワードを変更してください。',
'Mail Footer' => 'メールフッター',
+ '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.' => 'パスワードをリセットしようとしています。以下のリンクをクリックして、新しいパスワードを設定してください。',
+ 'If you did not request this change, you can safely ignore this email.' => 'このメールに心当たりがないときは、何もせずに無視してください。',
## default_templates/main_index.mtml
@@ -890,6 +892,15 @@ use vars qw( @ISA %Lexicon );
## lib/MT/CMS/Tools.pm
'Password Recovery' => 'パスワードの再設定',
+ 'Email Address is required for password recovery.' => 'メールアドレスが必要です。',
+ 'User not found' => 'ユーザーが見つかりませんでした。',
+ 'Error sending mail ([_1]); please fix the problem, then try again to recover your password.' => 'メールを送信できませんでした。問題を解決してから再度パスワードの再設定を行ってください: [_1]',
+ 'Password reset token not found' => 'パスワードをリセットするためのトークンが見つかりませんでした。',
+ 'Email address not found' => 'メールアドレスが見つかりませんでした。',
+ 'Your request to change your password has expired.' => 'パスワードのリセットを始めてから決められた時間を経過してしまいました。',
+ 'Invalid password reset request' => '不正なリクエストです。',
+ 'Please confirm your new password' => '新しいパスワードを確認してください。',
+ 'Passwords do not match' => 'パスワードが一致していません。',
'That action ([_1]) is apparently not implemented!' => 'アクション([_1])が実装されていません。',
'General Settings' => '全般',
'Invalid password recovery attempt; can\'t recover password in this configuration' => 'パスワードの再設定に失敗しました。この構成では再設定はできません。',
@@ -928,7 +939,7 @@ use vars qw( @ISA %Lexicon );
'User has not set pasword hint; cannot recover password' => 'パスワード再設定用のフレーズが設定されていないため、再設定できません。',
'Invalid attempt to recover password (used hint \'[_1]\')' => 'パスワードの再設定に失敗しました(フレーズ: [_1])。',
'User does not have email address' => 'ユーザーのメールアドレスがありません。',
- 'Password was reset for user \'[_1]\' (user #[_2]). Password was sent to the following address: [_3]' => 'ユーザー\'[_1]\'(ID:[_2])のパスワードがリセットされ、メールアドレス([_3])あてに通知されました。',
+ 'A password reset link has been sent to [_3] for user \'[_1]\' (user #[_2]).' => 'パスワード再設定用のリンクがユーザー\'[_1]\'(ID:[_2])のメールアドレス([_3])あてに通知されました。',
'Error sending mail ([_1]); please fix the problem, then try again to recover your password.' => 'メールを送信できませんでした。問題を解決してから再度パスワードの再設定を行ってください: [_1]',
'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>.' => '親となるオブジェクトがないため復元できなかったオブジェクトがあります。詳細は<a href="javascript:void(0)" onclick="closeDialog(\'[_1]\')">ログ</a>を参照してください。',
'[_1] is not a directory.' => '[_1]はディレクトリではありません。',
@@ -1684,6 +1695,7 @@ use vars qw( @ISA %Lexicon );
'Replacing file formats to use CategoryLabel tag...' => 'ファイルフォーマットをMTCategoryLabelに変換しています...',
'Assigning all permissions to blog administrator...' => 'ブログ管理者に権限を設定しています...',
'Recover permissions of system administrators...' => 'システム管理者の権限を復元しています...',
+ 'Updating password recover email template...' => 'パスワードの再設定(メール テンプレート)を更新しています...',
## lib/MT/PluginData.pm
'Plugin Data' => 'プラグインデータ',
@@ -1800,7 +1812,7 @@ use vars qw( @ISA %Lexicon );
'Invalid category ID \'[_1]\'' => 'Invalid category ID \'[_1]\'',
## lib/MT/App/CMS.pm
- '_WARNING_PASSWORD_RESET_MULTI' => '選択されたユーザーのパスワードを再設定しようとしています。パスワードはランダムに生成され、直接それぞれのメールアドレスに送られます。
+ '_WARNING_PASSWORD_RESET_MULTI' => '選択されたユーザーのパスワードを再設定しようとしています。パスワード再設定用のリンクが直接それぞれのメールアドレスに送られます。
実行しますか?',
'_WARNING_DELETE_USER_EUM' => "ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’å‰Šé™¤ã™ã‚‹ã¨ã€ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ›¸ã„ãŸãƒ–ãƒ­ã‚°è¨˜äº‹ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ä¸æ˜Žã¨ãªã‚Šã€å¾Œã§å–ã‚Šæ¶ˆã›ã¾ã›ã‚“ã€‚ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ç„¡åŠ¹åŒ–ã—ã¦ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„ã‚ˆã†ã«ã—ãŸã„å ´åˆã¯ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ç„¡åŠ¹åŒ–ã—ã¦ãã ã•ã„ã€‚æœ¬å½“ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’å‰Šé™¤ã—ã¦ã‚‚ã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ\nLDAPãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä¸Šã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã¾ã æ®‹ã£ã¦ã„ã‚‹å ´åˆã€ã„ã¤ã§ã‚‚å†ä½œæˆã•ã‚Œã¦ã—ã¾ã„ã¾ã™ã€‚",
@@ -1927,6 +1939,7 @@ use vars qw( @ISA %Lexicon );
'This module is required for cookie authentication.' => 'cookie 認証のために必要です。',
## lib/MT/App/Search.pm
+ 'Invalid [_1] parameter.' => '[_1]パラメータが不正です。',
'Invalid type: [_1]' => '不正なtypeです: [_1]',
'Search: failed storing results in cache. [_1] is not available: [_2]' => '結果をキャッシュできませんでした。[_1]を利用できません: [_2]',
'Invalid format: [_1]' => '不正なformatです: [_1]',
@@ -3938,6 +3951,9 @@ use vars qw( @ISA %Lexicon );
'This new publishing profile will update all of your templates.' => '公開プロファイルの設定内容を使って、すべてのテンプレートの設定を更新します。',
'Are you sure you wish to continue?' => '続けてもよろしいですか?',
+## tmpl/cms/dialog/new_password.tmpl
+ 'Choose New Password' => '新しいパスワードを選択',
+
## tmpl/cms/dialog/refresh_templates.tmpl
'Refresh Template Set' => 'テンプレートセットの初期化',
'Refresh [_1] template set' => 'テンプレートセット「[_1]」の初期化',
@@ -3973,10 +3989,13 @@ use vars qw( @ISA %Lexicon );
'Remember these settings' => '設定を記憶',
## tmpl/cms/dialog/recover.tmpl
+ 'The email address provided is not unique. Please enter your username.' => '同じメールアドレスを持っているユーザーがいます。ユーザー名を入力してください。',
+ 'An email with a link to reset your password has been sent to your email address ([_1]).' => '「[_1]」にパスワードをリセットするためのリンクを含むメールを送信しました。',
'Your password has been changed, and the new password has been sent to your email address ([_1]).' => 'パスワードを変更しました。新しいパスワードはメールアドレス([_1])に送信されます。',
'Recover (s)' => '再設定 (s)',
'Recover' => '再設定',
'Go Back (x)' => '戻る (x)',
+ 'Go Back' => '戻る',
## tmpl/cms/dialog/create_association.tmpl
'No roles exist in this installation. [_1]Create a role</a>' => 'ロールがありません。[_1]ロールを作成する</a>',
diff --git a/lib/MT/L10N/nl-iso-8859-1.pm b/lib/MT/L10N/nl-iso-8859-1.pm
index 2cffd5d..f4f329c 100644
--- a/lib/MT/L10N/nl-iso-8859-1.pm
+++ b/lib/MT/L10N/nl-iso-8859-1.pm
@@ -5227,7 +5227,33 @@ use vars qw( @ISA %Lexicon );
'Feeds.App Lite helps you republish feeds on your blogs. Want to do more with feeds in Movable Type?' => 'Feeds.App Lite helpt u om feeds te herpubliceren op uw weblogs. Wenst u meer te doen met feeds in Movable Type?',
'Upgrade to Feeds.App' => 'Upgraden naar Feeds.App',
'Create a Feed Widget' => 'Feedwidget aanmaken',
-
+ '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
+ '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
+ '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] bevat een ongeldig karakter: [_2]', # Translate - New
+ 'Email address is required.' => 'E-mail adres is vereist', # Translate - New
+ 'User not found' => 'Gebruiker niet gevonden', # Translate - New
+ 'Password reset token not found' => 'Wachtwoord reset token niet gevonden', # Translate - New
+ 'Email address not found' => 'E-mail adres niet gevonden', # Translate - New
+ 'Your request to change your password has expired.' => 'Uw verzoek om uw wachtwoord aan te passen is verlopen', # Translate - New
+ 'Invalid password reset request' => 'Ongeldig verzoek om wachtwoord te veranderen', # Translate - New
+ 'Please confirm your new password' => 'Gelieve uw nieuwe wachtwoord te bevestigen', # Translate - New
+ 'Password do not match' => 'Wachtwoorden komen niet overeen', # Translate - New
+ 'Invalid [_1] parameter.' => 'Ongeldige [_1] parameter', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Blog, BlogID of Template parameter moet opgegeven zijn.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Fout bij opslaan [_1] record # [_3]: [_2]...', # Translate - New
+ '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
+ '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
+ 'Choose New Password' => 'Nieuw wachtwoord kiezen', # Translate - New
+ 'You must set Local Archive Path.' => 'U moet een lokaal archiefpad instellen.', # Translate - New
+ 'You must set a valid Archive URL.' => 'U moet een geldige archief URL instellen.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'U moet een geldig lokaal archiefpad instellen.', # Translate - New
+ 'Passwords do not match' => 'Wachtwoorden komen niet overeen', # Translate - New
+ '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
+ 'Updating password recover email template...' => 'Sjabloon wachtwoordrecuperatie e-mail wordt bijgewerkt...', # Translate - New
+ '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
+ '_WARNING_PASSWORD_RESET_MULTI' => 'U staat op het punt e-mails te versturen waarmee de geselecteerde gebruikers hun wachtwoord kunnen aanpassen. Bent u zeker?',
+ "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]).',
);
## New words: 208
diff --git a/lib/MT/L10N/nl.pm b/lib/MT/L10N/nl.pm
index 5bccae8..c551642 100644
--- a/lib/MT/L10N/nl.pm
+++ b/lib/MT/L10N/nl.pm
@@ -5227,7 +5227,33 @@ use vars qw( @ISA %Lexicon );
'Feeds.App Lite helps you republish feeds on your blogs. Want to do more with feeds in Movable Type?' => 'Feeds.App Lite helpt u om feeds te herpubliceren op uw weblogs. Wenst u meer te doen met feeds in Movable Type?',
'Upgrade to Feeds.App' => 'Upgraden naar Feeds.App',
'Create a Feed Widget' => 'Feedwidget aanmaken',
-
+ '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
+ '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
+ '%f-thumb-%wx%h-%i%x' => '%f-thumb-%wx%h-%i%x', # Translate - New
+ '[_1] contains an invalid character: [_2]' => '[_1] bevat een ongeldig karakter: [_2]', # Translate - New
+ 'Email address is required.' => 'E-mail adres is vereist', # Translate - New
+ 'User not found' => 'Gebruiker niet gevonden', # Translate - New
+ 'Password reset token not found' => 'Wachtwoord reset token niet gevonden', # Translate - New
+ 'Email address not found' => 'E-mail adres niet gevonden', # Translate - New
+ 'Your request to change your password has expired.' => 'Uw verzoek om uw wachtwoord aan te passen is verlopen', # Translate - New
+ 'Invalid password reset request' => 'Ongeldig verzoek om wachtwoord te veranderen', # Translate - New
+ 'Please confirm your new password' => 'Gelieve uw nieuwe wachtwoord te bevestigen', # Translate - New
+ 'Password do not match' => 'Wachtwoorden komen niet overeen', # Translate - New
+ 'Invalid [_1] parameter.' => 'Ongeldige [_1] parameter', # Translate - New
+ 'Blog, BlogID or Template param must be specified.' => 'Blog, BlogID of Template parameter moet opgegeven zijn.', # Translate - New
+ 'Error saving [_1] record # [_3]: [_2]...' => 'Fout bij opslaan [_1] record # [_3]: [_2]...', # Translate - New
+ '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
+ '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
+ 'Choose New Password' => 'Nieuw wachtwoord kiezen', # Translate - New
+ 'You must set Local Archive Path.' => 'U moet een lokaal archiefpad instellen.', # Translate - New
+ 'You must set a valid Archive URL.' => 'U moet een geldige archief URL instellen.', # Translate - New
+ 'You must set a valid Local Archive Path.' => 'U moet een geldig lokaal archiefpad instellen.', # Translate - New
+ 'Passwords do not match' => 'Wachtwoorden komen niet overeen', # Translate - New
+ '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
+ 'Updating password recover email template...' => 'Sjabloon wachtwoordrecuperatie e-mail wordt bijgewerkt...', # Translate - New
+ '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
+ '_WARNING_PASSWORD_RESET_MULTI' => 'U staat op het punt e-mails te versturen waarmee de geselecteerde gebruikers hun wachtwoord kunnen aanpassen. Bent u zeker?',
+ "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]).',
);
## New words: 208
diff --git a/lib/MT/Sanitize.pm b/lib/MT/Sanitize.pm
index 328a242..1e82abb 100644
--- a/lib/MT/Sanitize.pm
+++ b/lib/MT/Sanitize.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: Sanitize.pm 1174 2008-01-08 21:02:50Z bchoate $
+# $Id: Sanitize.pm 3214 2008-12-03 05:22:10Z fumiakiy $
# Original Copyright (c) 2002 Brad Choate
diff --git a/lib/MT/Template/ContextHandlers.pm b/lib/MT/Template/ContextHandlers.pm
index 0440029..bf35731 100644
--- a/lib/MT/Template/ContextHandlers.pm
+++ b/lib/MT/Template/ContextHandlers.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: ContextHandlers.pm 3072 2008-09-26 02:10:48Z bchoate $
+# $Id: ContextHandlers.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::Template::Context;
@@ -12809,10 +12809,11 @@ sub _hdlr_archive_link {
my($ctx, $args) = @_;
my $at = $args->{type} || $args->{archive_type};
- $at ||= $ctx->{current_archive_type} || $ctx->{archive_type};
-
- return _hdlr_category_archive(@_) if ($at && ('Category' eq $at));;
+ return _hdlr_category_archive(@_)
+ if ($at && ('Category' eq $at)) ||
+ ($ctx->{current_archive_type} && 'Category' eq $ctx->{current_archive_type});
+ $at ||= $ctx->{current_archive_type} || $ctx->{archive_type};
my $archiver = MT->publisher->archiver($at);
return '' unless $archiver;
diff --git a/lib/MT/Upgrade.pm b/lib/MT/Upgrade.pm
index 99549c0..31989d6 100644
--- a/lib/MT/Upgrade.pm
+++ b/lib/MT/Upgrade.pm
@@ -978,6 +978,10 @@ sub core_upgrade_functions {
},
},
},
+ 'core_update_password_recover_template' => {
+ version_limit => 4.0068,
+ code => \&core_update_password_recover_template,
+ },
};
}
@@ -1298,6 +1302,31 @@ sub core_populate_author_auth_type {
}
}
+sub core_update_password_recover_template {
+ my $self = shift;
+ $self->progress($self->translate_escape("Updating password recover email template..."));
+ require MT::DefaultTemplates;
+ my $recover_tmpl = MT::DefaultTemplates->load ({ identifier => 'recover-password' });
+ my $recover_text = MT->instance->translate_templatized($recover_tmpl->{text});
+ require MT::Template;
+ my @tmpls = MT::Template->load ({ type => 'email', identifier => 'recover-password' });
+ for my $tmpl (@tmpls) {
+ my $backup = $tmpl->clone;
+ delete $backup->{column_values}
+ ->{id}; # make sure we don't overwrite original
+ delete $backup->{changed_cols}->{id};
+ $backup->name(
+ $backup->name . ' (Backup during upgrade to version 4.24)' );
+ $backup->type('backup');
+ $backup->identifier(undef);
+ $backup->save;
+
+ $tmpl->text ($recover_text);
+ $tmpl->save;
+ }
+}
+
+
sub migrate_nofollow_settings {
my $self = shift;
diff --git a/lib/MT/Util.pm b/lib/MT/Util.pm
index d32d141..4ba7a97 100644
--- a/lib/MT/Util.pm
+++ b/lib/MT/Util.pm
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: Util.pm 2807 2008-07-17 02:34:42Z fumiakiy $
+# $Id: Util.pm 3214 2008-12-03 05:22:10Z fumiakiy $
package MT::Util;
diff --git a/lib/MT/Worker/Sync.pm b/lib/MT/Worker/Sync.pm
index 83b5fb1..b5d2fab 100644
--- a/lib/MT/Worker/Sync.pm
+++ b/lib/MT/Worker/Sync.pm
@@ -13,8 +13,6 @@ use TheSchwartz::Job;
use MT::FileInfo;
use MT::Util qw( log_time );
-use Data::Dumper;
-
sub work {
my $class = shift;
my TheSchwartz::Job $job = shift;
@@ -47,7 +45,7 @@ sub work {
my $fi_id = $job->uniqkey;
my $fi = MT::FileInfo->load($fi_id);
- if ($fi && (-f $fi->file_path || -l $fi->file_path)) {
+ if ($fi && (-f $fi->file_path)) {
##MT::TheSchwartz->debug("Syncing: " . RebuildQueue::Daemon::_summary($fi));
push @files, $fi->file_path;
unless ($fi->template_id) {
@@ -59,7 +57,7 @@ sub work {
# Don't know where the FileInfo record went. Oh well.
$job->completed();
} else {
- unless (-f $fi->file_path || -l $fi->file_path) {
+ unless (-f $fi->file_path) {
MT::TheSchwartz->debug("Warning: couldn't locate file: " . $fi->file_path);
$job->permanent_failure("Couldn't locate file: " . $fi->file_path);
}
@@ -75,7 +73,6 @@ sub work {
open FOUT, ">$file";
print FOUT join("\n", @files) . "\n";
close FOUT;
-
foreach my $target (@targets) {
my $cmd = "$rsync_cmd $rsync_opt --files-from=\"$file\" / \"$target\"";
MT::TheSchwartz->debug("Syncing files to $target...");
@@ -101,7 +98,7 @@ sub work {
} else {
my $elapsed = sprintf("done! (%0.02fs)", tv_interval($start));
$mt->log({
- message => $mt->translate('Synchronizing Files Done'),
+ message => $mt->translate('Synchrnizing Files Done'),
metadata => log_time() . ' '
. $mt->translate('Done syncing files to [_1] ([_2])', $target, $elapsed),
category => "sync",
diff --git a/lib/MT/XMLRPCServer.pm b/lib/MT/XMLRPCServer.pm
index d627f5c..b71b8e8 100644
--- a/lib/MT/XMLRPCServer.pm
+++ b/lib/MT/XMLRPCServer.pm
@@ -620,11 +620,6 @@ sub _get_entries {
unpack 'A4A2A2A2A2A2', $entry->authored_on;
my $row = { dateCreated => SOAP::Data->type(dateTime => $co),
userid => SOAP::Data->type(string => $entry->author_id) };
-
- $row->{ars_status} = SOAP::Data->type(string => $entry->status);
- $row->{ars_author_name} = SOAP::Data->type(string => encode_text($entry->author->nickname, undef, 'utf-8'));
- $row->{ars_category} = ($entry->category) ? SOAP::Data->type(string => $entry->category->label) : '';
-
$row->{ $param{page} ? 'page_id' : 'postid' } =
SOAP::Data->type(string => $entry->id);
if ($class eq 'blogger') {
diff --git a/mt-check.cgi b/mt-check.cgi
index 97d1660..f5bbe3c 100755
--- a/mt-check.cgi
+++ b/mt-check.cgi
@@ -54,7 +54,7 @@ use CGI;
my $cgi = new CGI;
my $view = $cgi->param("view");
my $version = $cgi->param("version");
-$version ||= '4.23-en';
+$version ||= '4.24-en';
my ($mt, $LH);
my $lang = 'en_US';
diff --git a/mt-static/css/main.css b/mt-static/css/main.css
index 47be396..b5e389a 100755
--- a/mt-static/css/main.css
+++ b/mt-static/css/main.css
@@ -1,4 +1,4 @@
-/* Movable Type (r) (C) 2001-2008 Six Apart, Ltd. All Rights Reserved
+/* Movable Type (r) (C) 2001-2009 Six Apart, Ltd. All Rights Reserved
* This file is combined from multiple sources. Consult the source files for their
* respective licenses and copyrights.
*/:link,:visited{text-decoration:none;}html,body,div,
diff --git a/mt-static/css/simple.css b/mt-static/css/simple.css
index 774d9d2..5ab318a 100755
--- a/mt-static/css/simple.css
+++ b/mt-static/css/simple.css
@@ -1,4 +1,4 @@
-/* Movable Type (r) (C) 2001-2008 Six Apart, Ltd. All Rights Reserved
+/* Movable Type (r) (C) 2001-2009 Six Apart, Ltd. All Rights Reserved
* This file is combined from multiple sources. Consult the source files for their
* respective licenses and copyrights.
*/:link,:visited{text-decoration:none;}html,body,div,
diff --git a/mt-static/js/mt_core_compact.js b/mt-static/js/mt_core_compact.js
index 6a63d00..dace641 100755
--- a/mt-static/js/mt_core_compact.js
+++ b/mt-static/js/mt_core_compact.js
@@ -1,4 +1,4 @@
-/* Movable Type (r) (C) 2001-2008 Six Apart, Ltd. All Rights Reserved
+/* Movable Type (r) (C) 2001-2009 Six Apart, Ltd. All Rights Reserved
* This file is combined from multiple sources. Consult the source files for their
* respective licenses and copyrights.
*/defined=function(x){return x!==undefined;};exists=function(x){return(x===undefined||x===null)?false:true;};truth=function(x){return(x&&x!="0")?true:false;};finite=function(x){return isFinite(x)?x:0;};finiteInt=function(x,b){return finite(parseInt(x,b));};finiteFloat=function(x){return finite(parseFloat(x));};max=function(){var a=arguments;var n=a[0];for(var i=1;i<a.length;i++)
diff --git a/php/lib/archive_lib.php b/php/lib/archive_lib.php
index 42f8828..f595541 100644
--- a/php/lib/archive_lib.php
+++ b/php/lib/archive_lib.php
@@ -3,7 +3,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: archive_lib.php 2304 2008-05-12 06:16:02Z takayama $
+# $Id: archive_lib.php 3214 2008-12-03 05:22:10Z fumiakiy $
require_once("MTUtil.php");
diff --git a/php/lib/function.mtcommentauthorlink.php b/php/lib/function.mtcommentauthorlink.php
index b342a6c..07f1917 100644
--- a/php/lib/function.mtcommentauthorlink.php
+++ b/php/lib/function.mtcommentauthorlink.php
@@ -3,7 +3,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: function.mtcommentauthorlink.php 2630 2008-06-23 10:30:58Z takayama $
+# $Id: function.mtcommentauthorlink.php 3214 2008-12-03 05:22:10Z fumiakiy $
function smarty_function_mtcommentauthorlink($args, &$ctx) {
global $mt;
diff --git a/php/lib/function.mtentryauthorlink.php b/php/lib/function.mtentryauthorlink.php
index b8b4de2..45e09c0 100644
--- a/php/lib/function.mtentryauthorlink.php
+++ b/php/lib/function.mtentryauthorlink.php
@@ -3,7 +3,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: function.mtentryauthorlink.php 1174 2008-01-08 21:02:50Z bchoate $
+# $Id: function.mtentryauthorlink.php 3214 2008-12-03 05:22:10Z fumiakiy $
function smarty_function_mtentryauthorlink($args, &$ctx) {
$entry = $ctx->stash('entry');
diff --git a/php/mt.php b/php/mt.php
index 43194ef..810512a 100644
--- a/php/mt.php
+++ b/php/mt.php
@@ -5,9 +5,9 @@
#
# $Id: mt.php.pre 2688 2008-07-03 00:38:58Z bchoate $
-define('VERSION', '4.23');
-define('VERSION_ID', '4.23-en');
-define('PRODUCT_VERSION', '4.23');
+define('VERSION', '4.24');
+define('VERSION_ID', '4.24-en');
+define('PRODUCT_VERSION', '4.24');
define('PRODUCT_NAME', 'Movable Type Pro');
global $Lexicon;
diff --git a/plugins/Cloner/cloner.pl b/plugins/Cloner/cloner.pl
index 1d8a58d..23e30ac 100755
--- a/plugins/Cloner/cloner.pl
+++ b/plugins/Cloner/cloner.pl
@@ -2,7 +2,7 @@
# This code cannot be redistributed without permission from www.sixapart.com.
# For more information, consult your Movable Type license.
#
-# $Id: cloner.pl 1174 2008-01-08 21:02:50Z bchoate $
+# $Id: cloner.pl 3214 2008-12-03 05:22:10Z fumiakiy $
# Blog Cloner plugin for Movable Type
# Author: Brad Choate, Six Apart (http://www.sixapart.com)
diff --git a/tmpl/cms/dialog/recover.tmpl b/tmpl/cms/dialog/recover.tmpl
index abb547e..064ecd9 100644
--- a/tmpl/cms/dialog/recover.tmpl
+++ b/tmpl/cms/dialog/recover.tmpl
@@ -1,19 +1,44 @@
<mt:setvarblock name="page_title"><__trans phrase="Password Recovery"></mt:setvarblock>
<mt:setvar name="complete" value="1">
-<mt:include name="include/chromeless_header.tmpl">
+<mt:include name="cms/include/chromeless_header.tmpl">
+<mt:if name="error">
+ <mtapp:statusmsg
+ id="error"
+ class="error">
+ <mt:var name="error">
+ </mtapp:statusmsg>
+</mt:if>
+
+<mt:If name="not_unique_email">
+ <mtapp:statusmsg
+ id="not-unique-email"
+ class="alert">
+ <__trans phrase="The email address provided is not unique. Please enter your username.">
+ </mtapp:statusmsg>
+</mt:if>
<mt:if name="recovered">
-<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>
+<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>
<div class="actions-bar">
<div class="actions-bar-inner pkg actions">
+ <mt:If name="return_to">
+ <a
+ href="<$mt:var name="return_to" escape="html" $>"
+ accesskey="x"
+ title="<__trans phrase="Go Back (x)">"
+ class="primary-button"
+ ><__trans phrase="Go Back"></a>
+ <mt:Else>
<a
- href="<$mt:var name="mt_url"$>"
+ href="<$mt:var name="script_url"$>"
accesskey="s"
title="<__trans phrase="Sign in to Movable Type (s)">"
class="primary-button"
><__trans phrase="Sign in to Movable Type"></a>
+ </a>
+ </mt:If>
</div>
</div>
@@ -21,21 +46,24 @@
<mt:else>
<form method="post" action="<mt:var name="script_url">">
<input type="hidden" name="__mode" value="recover" />
+ <input type="hidden" name="return_to" value="<mt:Var name="return_to" escape="html">" />
<fieldset>
<mtapp:setting
- id="name"
- label="<__trans phrase="Username">"
+ id="email"
+ label="<__trans phrase="Email Address">"
label_class="top-label">
- <input type="text" name="name" id="name" class="ti" />
+ <input type="text" name="email" id="email" class="ti" value="<mt:var name="email">" />
</mtapp:setting>
+<mt:If name="not_unique_email">
<mtapp:setting
- id="hint"
- label="<__trans phrase="Password recovery word/phrase">"
+ id="name"
+ label="<__trans phrase="Username">"
label_class="top-label">
- <input type="text" name="hint" id="hint" class="ti" autocomplete="0" />
+ <input type="text" name="name" id="name" class="ti" value="<mt:var name="name">" />
</mtapp:setting>
+</mt:If>
<div class="actions-bar">
<div class="actions-bar-inner pkg actions right">
@@ -58,5 +86,4 @@
</form>
</mt:if>
-
-<mt:include name="include/chromeless_footer.tmpl">
+<mt:include name="cms/include/chromeless_footer.tmpl">
diff --git a/tmpl/comment/login.tmpl b/tmpl/comment/login.tmpl
index 40e1423..1fac640 100644
--- a/tmpl/comment/login.tmpl
+++ b/tmpl/comment/login.tmpl
@@ -82,7 +82,7 @@
<input type="password" name="password" id="password" class="pw" />
</mtapp:setting>
<mt:if name="can_recover_password">
- <div class="right"><a href="<mt:var name="mt_url">?__mode=start_recover"><__trans phrase="Forgot your password?"></a></div>
+ <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>
</mt:if>
<p><label><__trans phrase="Remember me?"></label> <input type="checkbox" name="remember" value="1" accesskey="r" class="cb" /></p>
<div class="actions-bar actions-bar-login">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment