diff --git a/res/layout/nux_dialog_fragment.xml b/res/layout/nux_dialog_fragment.xml index 7574a1186ca0..d3ef8103762e 100644 --- a/res/layout/nux_dialog_fragment.xml +++ b/res/layout/nux_dialog_fragment.xml @@ -49,7 +49,7 @@ android:paddingBottom="8dp" android:paddingTop="8dp" android:textColor="@color/white" - android:textSize="18sp" + android:textSize="16sp" android:shadowColor="@color/black" android:shadowDx="0" android:shadowDy="1" @@ -81,9 +81,9 @@ @@ -91,7 +91,7 @@ Are you sure you want to sign out from WordPress.com? Are you sure you want to sign out? Please sign in again. - This account has two step authentication enabled. Please open WordPress.com in your browser, and generate an application-specific passwords to use with this app.\n(Log in to WordPress, and go to Settings->security). + This account has two step authentication enabled. Visit your security settings on WordPress.com and generate an application-specific password. Visit Security Settings diff --git a/src/org/wordpress/android/ui/accounts/NUXDialogFragment.java b/src/org/wordpress/android/ui/accounts/NUXDialogFragment.java index fee85676e947..9e23e9e0d1ee 100644 --- a/src/org/wordpress/android/ui/accounts/NUXDialogFragment.java +++ b/src/org/wordpress/android/ui/accounts/NUXDialogFragment.java @@ -1,5 +1,7 @@ package org.wordpress.android.ui.accounts; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; @@ -14,12 +16,14 @@ import org.wordpress.android.widgets.WPTextView; public class NUXDialogFragment extends SherlockDialogFragment { - private static String ARG_TITLE = "title"; private static String ARG_DESCRIPTION = "message"; private static String ARG_FOOTER = "footer"; private static String ARG_IMAGE = "image"; private static String ARG_TWO_BUTTONS = "two-buttons"; + private static String ARG_SECOND_BUTTON_LABEL = "second-btn-label"; + private static String ARG_SECOND_BUTTON_ACTION = "second-btn-action"; + private static String ARG_SECOND_BUTTON_PARAM = "second-btn-param"; private ImageView mImageView; private WPTextView mTitleTextView; @@ -29,17 +33,22 @@ public class NUXDialogFragment extends SherlockDialogFragment { private WPTextView mFooterRightButton; private RelativeLayout mFooterTwoButtons; + public static int ACTION_FINISH = 1; + public static int ACTION_OPEN_URL = 2; + public NUXDialogFragment() { // Empty constructor required for DialogFragment } public static NUXDialogFragment newInstance(String title, String message, String footer, int imageSource) { - return newInstance(title, message, footer, imageSource, false); + return newInstance(title, message, footer, imageSource, false, "", 0, ""); } public static NUXDialogFragment newInstance(String title, String message, String footer, - int imageSource, boolean twoButtons) { + int imageSource, boolean twoButtons, + String secondButtonLabel, int secondButtonAction, + String secondButtonParam) { NUXDialogFragment adf = new NUXDialogFragment(); Bundle bundle = new Bundle(); bundle.putString(ARG_TITLE, title); @@ -47,6 +56,10 @@ public static NUXDialogFragment newInstance(String title, String message, String bundle.putString(ARG_FOOTER, footer); bundle.putInt(ARG_IMAGE, imageSource); bundle.putBoolean(ARG_TWO_BUTTONS, twoButtons); + bundle.putString(ARG_SECOND_BUTTON_LABEL, secondButtonLabel); + bundle.putInt(ARG_SECOND_BUTTON_ACTION, secondButtonAction); + bundle.putString(ARG_SECOND_BUTTON_PARAM, secondButtonParam); + adf.setArguments(bundle); adf.setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme); return adf; @@ -75,6 +88,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, if (args.getBoolean(ARG_TWO_BUTTONS)) { mFooterOneButton.setVisibility(View.GONE); mFooterTwoButtons.setVisibility(View.VISIBLE); + mFooterRightButton.setText(args.getString(ARG_SECOND_BUTTON_LABEL)); } View.OnClickListener clickListenerDismiss = new View.OnClickListener() { @@ -84,10 +98,20 @@ public void onClick(View v) { } }; + final int action = args.getInt(ARG_SECOND_BUTTON_ACTION, 0); + final String param = args.getString(ARG_SECOND_BUTTON_PARAM); + View.OnClickListener clickListenerFinish = new View.OnClickListener() { @Override public void onClick(View v) { - getActivity().finish(); + if (action == ACTION_FINISH) { + getActivity().finish(); + } + if (action == ACTION_OPEN_URL) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(param)); + startActivity(intent); + dismissAllowingStateLoss(); + } } }; diff --git a/src/org/wordpress/android/ui/accounts/SetupBlog.java b/src/org/wordpress/android/ui/accounts/SetupBlog.java index 630559cba7a8..ec63ea727806 100644 --- a/src/org/wordpress/android/ui/accounts/SetupBlog.java +++ b/src/org/wordpress/android/ui/accounts/SetupBlog.java @@ -28,7 +28,7 @@ public class SetupBlog { private String mHttpPassword = ""; private String mXmlrpcUrl; - private int mErrorMsgId = -1; + private int mErrorMsgId; private boolean mIsCustomUrl; private String mSelfHostedURL; diff --git a/src/org/wordpress/android/ui/accounts/WelcomeFragmentSignIn.java b/src/org/wordpress/android/ui/accounts/WelcomeFragmentSignIn.java index 8ff2f373eb8b..0cd52b3ab8cb 100644 --- a/src/org/wordpress/android/ui/accounts/WelcomeFragmentSignIn.java +++ b/src/org/wordpress/android/ui/accounts/WelcomeFragmentSignIn.java @@ -212,7 +212,7 @@ protected void endProgress() { private class SetupBlogTask extends AsyncTask> { private SetupBlog mSetupBlog; - private String mErrorMsg; + private int mErrorMsgId; @Override protected void onPreExecute() { @@ -231,9 +231,7 @@ protected void onPreExecute() { @Override protected List doInBackground(Void... args) { List userBlogList = mSetupBlog.getBlogList(); - if (mSetupBlog.getErrorMsgId() != -1) { - mErrorMsg = getString(mSetupBlog.getErrorMsgId()); - } + mErrorMsgId = mSetupBlog.getErrorMsgId(); return userBlogList; } @@ -269,13 +267,23 @@ public void onClick(DialogInterface dialog, int whichButton) { return; } - if (usersBlogsList == null && mErrorMsg != null) { + if (usersBlogsList == null && mErrorMsgId != 0) { FragmentTransaction ft = getFragmentManager().beginTransaction(); - NUXDialogFragment nuxAlert = NUXDialogFragment - .newInstance(getString(R.string.nux_cannot_log_in), mErrorMsg, - getString(R.string.nux_tap_continue), R.drawable.nux_icon_alert); + NUXDialogFragment nuxAlert; + if (mErrorMsgId == R.string.account_two_step_auth_enabled) { + nuxAlert = NUXDialogFragment.newInstance(getString(R.string.nux_cannot_log_in), + getString(mErrorMsgId), getString(R.string.nux_tap_continue), + R.drawable.nux_icon_alert, true, + getString(R.string.visit_security_settings), + NUXDialogFragment.ACTION_OPEN_URL, + "https://wordpress.com/settings/security/?ssl=forced"); + } else { + nuxAlert = NUXDialogFragment.newInstance(getString(R.string.nux_cannot_log_in), + getString(mErrorMsgId), getString(R.string.nux_tap_continue), + R.drawable.nux_icon_alert); + } nuxAlert.show(ft, "alert"); - mErrorMsg = null; + mErrorMsgId = 0; endProgress(); return; }