diff --git a/ParseUI-Login/build.gradle b/ParseUI-Login/build.gradle index 6e1416f..1ed331f 100644 --- a/ParseUI-Login/build.gradle +++ b/ParseUI-Login/build.gradle @@ -24,6 +24,7 @@ import com.android.builder.core.BuilderConstants apply plugin: 'android-library' version = "0.0.1" +group = 'com.parse' dependencies { compile 'com.android.support:support-v4:23.0.1' @@ -110,7 +111,7 @@ uploadArchives { licenses { license { - name 'BSD License' + name 'Platform License' url 'https://github.com/ParsePlatform/ParseUI-Android/blob/master/LICENSE' distribution 'repo' } diff --git a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginActivity.java b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginActivity.java index 353b65b..e3145f0 100644 --- a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginActivity.java +++ b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginActivity.java @@ -89,6 +89,9 @@ public class ParseLoginActivity extends FragmentActivity implements public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // Disable landscape + this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Combine options from incoming intent and the activity metadata diff --git a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginBuilder.java b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginBuilder.java index d6a5014..396955e 100644 --- a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginBuilder.java +++ b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginBuilder.java @@ -210,6 +210,18 @@ public ParseLoginBuilder setParseSignupSubmitButtonText(int id) { return setParseSignupSubmitButtonText(maybeGetString(id)); } + /** + * Whether to show the name field in the signup form. Default is true. + * + * @param enabled + * Whether to show the name field in the signup form. + * @return The caller instance to allow chaining. + */ + public ParseLoginBuilder setParseSignupNameFieldEnabled(boolean enabled) { + config.setParseSignupNameFieldEnabled(enabled); + return this; + } + /** * Whether to show the Facebook login option on the login screen. Default is * false. diff --git a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginConfig.java b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginConfig.java index bde9aae..def884a 100644 --- a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginConfig.java +++ b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginConfig.java @@ -47,6 +47,7 @@ public class ParseLoginConfig { public static final String PARSE_LOGIN_EMAIL_AS_USERNAME = "com.parse.ui.ParseLoginActivity.PARSE_LOGIN_EMAIL_AS_USERNAME"; public static final String PARSE_SIGNUP_MIN_PASSWORD_LENGTH = "com.parse.ui.ParseLoginActivity.PARSE_SIGNUP_MIN_PASSWORD_LENGTH"; public static final String PARSE_SIGNUP_SUBMIT_BUTTON_TEXT = "com.parse.ui.ParseLoginActivity.PARSE_SIGNUP_SUBMIT_BUTTON_TEXT"; + public static final String PARSE_SIGNUP_NAME_FIELD_ENABLED = "com.parse.ui.ParseLoginActivity.PARSE_SIGNUP_NAME_FIELD_ENABLED"; public static final String FACEBOOK_LOGIN_ENABLED = "com.parse.ui.ParseLoginActivity.FACEBOOK_LOGIN_ENABLED"; public static final String FACEBOOK_LOGIN_BUTTON_TEXT = "com.parse.ui.ParseLoginActivity.FACEBOOK_LOGIN_BUTTON_TEXT"; public static final String FACEBOOK_LOGIN_PERMISSIONS = "com.parse.ui.ParseLoginActivity.FACEBOOK_LOGIN_PERMISSIONS"; @@ -70,6 +71,7 @@ public class ParseLoginConfig { private Boolean parseLoginEmailAsUsername; private Integer parseSignupMinPasswordLength; private CharSequence parseSignupSubmitButtonText; + private Boolean parseSignupNameFieldEnabled; private Boolean facebookLoginEnabled; private CharSequence facebookLoginButtonText; @@ -160,6 +162,18 @@ public void setParseSignupSubmitButtonText( this.parseSignupSubmitButtonText = parseSignupSubmitButtonText; } + public Boolean isParseSignupNameFieldEnabled() { + if (parseSignupNameFieldEnabled != null) { + return parseSignupNameFieldEnabled; + } else { + return true; + } + } + + public void setParseSignupNameFieldEnabled(Boolean parseSignupNameFieldEnabled) { + this.parseSignupNameFieldEnabled = parseSignupNameFieldEnabled; + } + public boolean isFacebookLoginEnabled() { if (facebookLoginEnabled != null) { return facebookLoginEnabled; @@ -267,6 +281,9 @@ public Bundle toBundle() { bundle.putCharSequence(PARSE_SIGNUP_SUBMIT_BUTTON_TEXT, parseSignupSubmitButtonText); } + if (parseSignupNameFieldEnabled != null) { + bundle.putBoolean(PARSE_SIGNUP_NAME_FIELD_ENABLED, parseSignupNameFieldEnabled); + } if (facebookLoginEnabled != null) { bundle.putBoolean(FACEBOOK_LOGIN_ENABLED, facebookLoginEnabled); @@ -336,6 +353,9 @@ public static ParseLoginConfig fromBundle(Bundle bundle, Context context) { if (keys.contains(PARSE_SIGNUP_SUBMIT_BUTTON_TEXT)) { config.setParseSignupSubmitButtonText(bundle.getCharSequence(PARSE_SIGNUP_SUBMIT_BUTTON_TEXT)); } + if (keys.contains(PARSE_SIGNUP_NAME_FIELD_ENABLED)) { + config.setParseSignupNameFieldEnabled(bundle.getBoolean(PARSE_SIGNUP_NAME_FIELD_ENABLED)); + } if (keys.contains(FACEBOOK_LOGIN_ENABLED)) { config.setFacebookLoginEnabled(bundle.getBoolean(FACEBOOK_LOGIN_ENABLED)); diff --git a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginDispatchActivity.java b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginDispatchActivity.java index 7d16308..13974f6 100644 --- a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginDispatchActivity.java +++ b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginDispatchActivity.java @@ -88,7 +88,12 @@ protected Intent getParseLoginIntent() { private void runDispatch() { if (ParseUser.getCurrentUser() != null) { debugLog(getString(R.string.com_parse_ui_login_dispatch_user_logged_in) + getTargetClass()); - startActivityForResult(new Intent(this, getTargetClass()), TARGET_REQUEST); + Intent targetIntent = new Intent(this, getTargetClass()); + Bundle extras = getIntent().getExtras(); + if (extras != null) { + targetIntent.putExtras(extras); + } + startActivityForResult(targetIntent, TARGET_REQUEST); } else { debugLog(getString(R.string.com_parse_ui_login_dispatch_user_not_logged_in)); startActivityForResult(getParseLoginIntent(), LOGIN_REQUEST); diff --git a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginFragment.java b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginFragment.java index d43a282..b75782c 100644 --- a/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginFragment.java +++ b/ParseUI-Login/src/main/java/com/parse/ui/ParseLoginFragment.java @@ -22,6 +22,7 @@ package com.parse.ui; import android.app.Activity; +import android.content.Context; import android.os.Bundle; import android.text.InputType; import android.view.LayoutInflater; @@ -119,9 +120,10 @@ public View onCreateView(LayoutInflater inflater, ViewGroup parent, } @Override - public void onAttach(Activity activity) { - super.onAttach(activity); + public void onAttach(Context context) { + super.onAttach(context); + final Activity activity = getActivity(); if (activity instanceof ParseLoginFragmentListener) { loginFragmentListener = (ParseLoginFragmentListener) activity; } else { diff --git a/ParseUI-Login/src/main/java/com/parse/ui/ParseSignupFragment.java b/ParseUI-Login/src/main/java/com/parse/ui/ParseSignupFragment.java index 27f9dca..f141c98 100644 --- a/ParseUI-Login/src/main/java/com/parse/ui/ParseSignupFragment.java +++ b/ParseUI-Login/src/main/java/com/parse/ui/ParseSignupFragment.java @@ -79,8 +79,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup parent, minPasswordLength = config.getParseSignupMinPasswordLength(); } - String username = (String) args.getString(USERNAME); - String password = (String) args.getString(PASSWORD); + String username = args.getString(USERNAME); + String password = args.getString(PASSWORD); View v = inflater.inflate(R.layout.com_parse_ui_parse_signup_fragment, parent, false); @@ -91,6 +91,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup parent, .findViewById(R.id.signup_confirm_password_input); emailField = (EditText) v.findViewById(R.id.signup_email_input); nameField = (EditText) v.findViewById(R.id.signup_name_input); + if (!config.isParseSignupNameFieldEnabled()) { + nameField.setVisibility(View.INVISIBLE); + } createAccountButton = (Button) v.findViewById(R.id.create_account); usernameField.setText(username); @@ -172,7 +175,7 @@ public void onClick(View v) { confirmPasswordField.requestFocus(); } else if (email != null && email.length() == 0) { showToast(R.string.com_parse_ui_no_email_toast); - } else if (name != null && name.length() == 0) { + } else if (name != null && name.length() == 0 && config.isParseSignupNameFieldEnabled()) { showToast(R.string.com_parse_ui_no_name_toast); } else { ParseUser user = new ParseUser(); @@ -183,7 +186,7 @@ public void onClick(View v) { user.setEmail(email); // Set additional custom fields only if the user filled it out - if (name.length() != 0) { + if (name.length() != 0 && config.isParseSignupNameFieldEnabled()) { user.put(USER_OBJECT_NAME_FIELD, name); } diff --git a/ParseUI-Login/src/main/res/values-ko/strings.xml b/ParseUI-Login/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000..890beda --- /dev/null +++ b/ParseUI-Login/src/main/res/values-ko/strings.xml @@ -0,0 +1,42 @@ + + + 불러오는중... + 아이디 + 암호 + 암호를 잃어버렸나요? + 로그인 + 새로 등록 + Facebook으로 로그인 + Twitter로 로그인 + 이메일 + 암호 확인 + 아이디 + 아이디 생성 + 아이디를 입력해 주세요 + 암호를 입력해 주세요 + 입력한 아이디 또는 암호가 맞지 않습니다 + 로그인 실패, 잠시 후 다시 시도해 보세요 + Facebook 로그인 실패 + Twitter 로그인 실패 + + + 암호는 %d 자 이상 입력해 주세요 + 암호는 %d 자 이상 입력해 주세요 + + + 이미 존재하는 아이디입니다. 다른 아이디를 입력해 주세요 + 암호 확인 창에 암호를 한번 더 입력해 주세요 + 암호가 맞지 않습니다. 다시 시도해 보세요 + 이메일을 입력해 주세요 + 잘못된 이메일입니다. 수정후 다시 시도해 보세요 + 이미 사용중인 이메일 입니다. 암호를 재설정 해 보세요 + 아이디를 입력해 주세요 + 등록에 실패했습니다. 잠시 후 다시 시도해 보세요 + 암호를 재설정 하려면 귀하의 이메일 주소를 입력해 주세요 + 이메일 + 제출 + 로그인 화면으로 복귀 + 암호 재설정 요청 실패, 다시 시도해 보세요 + 귀하의 아이디를 되찾을 방법이 적힌 이메일이 발송되었습니다. 메일을 확인해 보세요 + + diff --git a/ParseUI-Login/src/main/res/values-pt/strings.xml b/ParseUI-Login/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000..72ebcac --- /dev/null +++ b/ParseUI-Login/src/main/res/values-pt/strings.xml @@ -0,0 +1,62 @@ + + + Logomarca + Carregando… + Usuário + Senha + Esqueci a senha + Entrar + Cadastrar + Entrar com Facebook + Entrar com Twitter + E-mail + Confirmar senha + Nome + Criar conta + Informe seu usuário + Informe sua senha + Usuário e senha não conferem + Não foi possível entrar, tente novamente mais tarde + Entrar com Facebook falhou + Entrar com Twitter falhou + + + Senha deve conter pelo menos %d caracter + Senha deve conter pelo menos %d caracteres + + + Usuário já cadastrado, escolha outro + Informe a senha novamente + Senha não confere, tente novamente + Informe seu e-mail + E-mail inválido, corrija e tente novamente + E-mail já foi cadastrado, por favor redefina a sua senha + Informe seu nome + Não foi possível cadastrar, tente novamente mais tarde + Informe seu e-mail para recuperar sua senha + E-mail + Enviar + Voltar para o Login + Erro ao solicitar recadastramento da senha, tente novamente + Verifique seu e-mail para obter informações sobre como acessar sua conta + + Campo usuário faltando no layout + Campo senha faltando no layout + Botão entrar faltando no layout + Botão cadastrar faltando no layout + Botão ajuda faltando no layout + Entrar e cadastrar com usuário e senha desabilitados devido a falta de elementos no layout + Botão de login pelo Facebook faltando no layout, desabilite login pelo Facebook + Botão de login pelo Twitter faltando no layout, desabilite login pelo Twitter + "Entrar com usuário e senha falhou, exception: " + "Login pelo Facebook falhou, exception: " + "Login pelo Twitter falhou, exception: " + "Atualizar objeto usuário falhou após o login pelo Facebook, exception: " + "Atualizar objeto usuário falhou após o login pelo Twitter, exception: " + "Cadastrar falhou, exception: " + "Redefinir senha falhou, exception: " + + "Usuário conectado, iniciando: " + Usuário não conectado, iniciando ParseLoginActivity + + diff --git a/ParseUI-Login/src/main/res/values-zh/strings.xml b/ParseUI-Login/src/main/res/values-zh/strings.xml new file mode 100644 index 0000000..7e6fce1 --- /dev/null +++ b/ParseUI-Login/src/main/res/values-zh/strings.xml @@ -0,0 +1,42 @@ + + + 载入中... + 用户名 + 密码 + 忘记密码 + 登陆 + 注册 + 使用Facebook登陆 + 使用Twitter登陆 + 邮箱 + 确认密码 + 姓名 + 注册 + 请输入用户名 + 请输入密码 + 用户名密码不匹配 + 登陆失败,请重试 + Facebook登陆失败 + Twitter登陆失败 + + + 密码至少%d个字符 + 密码至少%d个字符 + + + 用户名已经存在,请换一个重试 + 请重新输入密码 + 密码不匹配,请重试 + 请输入邮箱 + 邮箱无效,请更正并重试 + 邮箱已经存在,请换一个重试 + 请输入姓名 + 注册失败,请稍后重试 + 输入邮箱找回密码 + 邮箱 + 提交 + 返回登陆 + 重置密码失败,请重试 + 重置密码邮件已发送,请检查邮箱 + + diff --git a/ParseUI-Widget/build.gradle b/ParseUI-Widget/build.gradle index f8cc5b8..5142939 100644 --- a/ParseUI-Widget/build.gradle +++ b/ParseUI-Widget/build.gradle @@ -23,6 +23,7 @@ import com.android.builder.core.BuilderConstants apply plugin: 'com.android.library' version = "0.0.1" +group = 'com.parse' dependencies { compile 'com.parse:parse-android:1.10.3' @@ -109,7 +110,7 @@ uploadArchives { licenses { license { - name 'BSD License' + name 'Platform License' url 'https://github.com/ParsePlatform/ParseUI-Android/blob/master/LICENSE' distribution 'repo' } diff --git a/README.md b/README.md index 42310dc..eca031d 100644 --- a/README.md +++ b/README.md @@ -8,21 +8,18 @@ The `ParseUI-Widget` library provides several useful UI widgets which integrate ## Import to your project -1. Clone this repository onto your machine. -2. Configure Parse SDK by following this [tutorial](https://www.parse.com/apps/quickstart#parse_data/mobile/android/native/existing). -3. Import `ParseUI-Login` and `ParseUI-Widget` as modules into your app's Android Studio Project - * File > Import Module in Android Studio - * In the New Module pop-up, set the source directory to the `ParseUI-Android/ParseUI-Login` and `ParseUI-Android/ParseUI-Widget` folder within the cloned repo. -4. Add the following to the `dependencies` section of your app's build.gradle. +1. Configure Parse SDK by following this [tutorial](https://www.parse.com/apps/quickstart#parse_data/mobile/android/native/existing). +2. Add the following to the `dependencies` section of your app's build.gradle. ```grovvy // Module dependency on ParseUI libraries sources - compile project(':ParseUI-Login') - compile project(':ParseUI-Widget') + compile 'com.parse:parseui-login-android:0.0.1' + compile 'com.parse:parseui-widget-android:0.0.1' - // Uncomment if using Facebook Login (optional Maven dependency) + // Uncomment if using Facebook or Twitter Login (optional Maven dependency) // compile 'com.facebook.android:facebook-android-sdk:4.6.0' // compile 'com.parse:parsefacebookutils-v4-android:1.10.3@aar' + // compile 'com.parse:parsetwitterutils-android:1.10.3' ``` ## Usage @@ -51,4 +48,4 @@ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.