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;
}